Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112

Listbox с иконкой

04.06.2013, 13:13. Показов 4055. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как в обычный апишный контрол listbox добавить к каждой строке иконку (ico или bitmap) и сделать на ней checkbox, вот как здесь.
Миниатюры
Listbox с иконкой  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2013, 13:13
Ответы с готовыми решениями:

Создать окно с иконкой
Разработать программу создающую окно с иконкой средствами Win32 API знаю что я очень глуп,только начал изучать с++)

Создание кнопки с иконкой на WinAPI
Мне нужно создать кнопку с иконкой на WinAPI, помогите пожалуйста!

Проблема с иконкой в верхнем углу приложения
не получается изменить иконку в влевом верхнем углу приложения,иконку приложения на панели задач успешно поменял,а вот другая не ххочет...

28
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
19.06.2013, 18:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от BAADF00D Посмотреть сообщение
Как грамотно заполнить созданные столбцы? Делаю так:
C
1
2
3
4
5
6
7
8
9
10
11
12
void LV_insert_item (HWND hwnd, const char *s, int NoIt, int NoSubIt) {
    LV_ITEM lvi;
 
    ZeroMemory(&lvi, sizeof(lvi));
 
    lvi.mask = LVIF_TEXT;
    lvi.iItem = NoIt;
    lvi.iSubItem = NoSubIt;
 
    lvi.pszText = (LPSTR)s;
    ListView_InsertItem(hwnd, &lvi);
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static RECT client_rect;
    static HWND hLvList;
 
    GetClientRect(hwnd, &client_rect);
 
    switch (message)                  /* handle the messages */
    {
    case WM_CREATE:
 
        hLvList = CreateWindowEx(0, WC_LISTVIEW,0,
            LVS_REPORT | LVS_ALIGNLEFT | WS_CHILD | WS_VISIBLE |
            WS_HSCROLL | WS_VSCROLL, client_rect.left, client_rect.top,
            client_rect.right - client_rect.left, client_rect.bottom - client_rect.top,
            hwnd, NULL, ((CREATESTRUCT*)lParam)->hInstance, NULL);
 
        LV_insert_column(hLvList, "column1", 100, 0);
        LV_insert_column(hLvList, "column2", 100, 1);
        LV_insert_column(hLvList, "column3", 100, 2);
        LV_insert_column(hLvList, "column4", 100, 3);
 
        LV_insert_item(hLvList, "Item1", 0, 0);
        LV_insert_item(hLvList, "SubItem1", 0, 1);
        LV_insert_item(hLvList, "Item2", 1, 0);
        LV_insert_item(hLvList, "SubItem2", 1, 1);
 
        ShowWindow(hLvList, SW_SHOW);
        UpdateWindow(hLvList);
 
        break;
    case WM_DESTROY:
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
    default:                      /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
Заполняются только item1, item2 (в коде строковые константы), subitem1, subitem2 не запоняются. Почему так?
Посмотри вот здесь.
http://www.frolov-lib.ru/books/bsp/v22/ch3_2.html
И ещё здесь:
http://msdn.microsoft.com/en-u... 85%29.aspx
Там заполнение элементов показано.
Я лично когда разбирался взял пример у мелкософта.
Работает, только заполнять лучше там функцией закоментированой
StringCchCopy(), т.к. она копирует строку, если же через присваивания то тогда нужно чтобы буфер в на который ты будешь передавать указатель должен быть постоянно доступен т.е. static.
1
Заблокирован
19.06.2013, 20:22
Заполняется только нулевой столбец.
0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
19.06.2013, 20:42
Цитата Сообщение от BAADF00D Посмотреть сообщение
Заполняется только нулевой столбец.
Ты использовал этот код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void HandleWM_NOTIFY(LPARAM lParam)
{
    NMLVDISPINFO* plvdi;
 
    switch (((LPNMHDR) lParam)->code)
    {
        case LVN_GETDISPINFO:
 
            plvdi = (NMLVDISPINFO*)lParam;
 
            switch (plvdi->item.iSubItem)
            {
                case 0:
                    plvdi->item.pszText = rgPetInfo[plvdi->item.iItem].szKind;
                    break;
                      
                case 1:
                    plvdi->item.pszText = rgPetInfo[plvdi->item.iItem].szBreed;
                    break;
                
                case 2:
                    plvdi->item.pszText = rgPetInfo[plvdi->item.iItem].szPrice;
                    break;
                
                default:
                    break;
            }
 
        break;
 
    }
    // NOTE: In addition to setting pszText to point to the item text, you could 
    // copy the item text into pszText using StringCchCopy. For example:
    //
    // StringCchCopy(plvdi->item.pszText, 
    //                         plvdi->item.cchTextMax, 
    //                         rgPetInfo[plvdi->item.iItem].szKind);
 
    return;
}
Если да, то он рабочий.
Смотри где ты создаёшь колонки...
Может там ошибка.
Сейчас ещё сцылку дам на создания колонок, тоже этот код юзал и он рабочий.

Добавлено через 3 минуты
Вот на создания колонок.
http://msdn.microsoft.com/en-u... 85%29.aspx
и Вот на все случаи жизни с listview
http://msdn.microsoft.com/en-u... 85%29.aspx
У Фроловых тоже почитать можешь, по русски и разжованно...
1
Заблокирован
19.06.2013, 20:50
Этот вариант вообще не работает.

Добавлено через 3 минуты
Цитата Сообщение от IPavel Посмотреть сообщение
У Фроловых тоже почитать можешь
вот это подробней, пожалуйста.
0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
20.06.2013, 11:03
Цитата Сообщение от BAADF00D Посмотреть сообщение
Этот вариант вообще не работает.

Добавлено через 3 минуты

вот это подробней, пожалуйста.
Я же давал уже ссылку выше.
Вот ещё раз.
http://www.frolov-lib.ru/books/bsp/v22/ch3.html
Тут про listview всё есть.
Ну почти всё
А код рабочий.
Сам недавно разберался с ним, и всё работает.
Значит что-то у тебя не так.
Исходник кидай тогда....

Добавлено через 21 минуту
Вот мой пример.
Рабочий с своего проекта скопировал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
case WM_CREATE:
INITCOMMONCONTROLSEX icex;           // Structure for control initialization.
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);
hListView = CreateWindow(WC_LISTVIEW, 
L"Тест",
WS_CHILD | WS_VISIBLE | LVS_NOSCROLL | LVS_REPORT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | LVS_SINGLESEL,
0,
0,
275, 280,
_hwnd,
(HMENU)IDM_LIST,
g_hInstance,
NULL); 
 
HIMAGELIST hImageSmall  = ImageList_Create(
GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),
ILC_MASK, 1, 1);
 
HICON hIcon = LoadIcon(NULL, IDI_QUESTION);
ImageList_AddIcon(hImageSmall, hIcon);
 
ListView_SetImageList(hListView, hImageSmall, LVSIL_SMALL);
 
LVCOLUMN lvc;
memset(&lvc, 0, sizeof(lvc));
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
lvc.cx = 150;
lvc.iSubItem = 0;
ListView_InsertColumn(hListView, 0, &lvc);
 
lvc.fmt = LVCFMT_LEFT;
lvc.cx = 125;
lvc.iSubItem = 1;
ListView_InsertColumn(hListView, 1, &lvc);
 
LVITEM lvi;
memset(&lvi, 0, sizeof(lvi));
lvi.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_STATE;
lvi.stateMask = 0;
lvi.state     = 0;
lvi.pszText = LPSTR_TEXTCALLBACK;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.cchTextMax = 40;
lvi.iImage = 0;
ListView_InsertItem(hListView, &lvi);
 
break;
 
case WM_NOTIFY:
{
NMLVDISPINFO* plvdi;
 
switch (((LPNMHDR) lParam)->code)
{
case LVN_GETDISPINFO:
 
plvdi = (NMLVDISPINFO*)lParam;
wchar_t buf[20];
 
switch (plvdi->item.iSubItem)
{
case 0:
plvdi->item.pszText = characterInfo[plvdi->item.iItem].szName;
break;
 
case 1:
memset(buf, 0, sizeof(buf));
int t1;
t1 = (characterInfo[plvdi->item.iItem].gen + characterInfo[plvdi->item.iItem].bon);
_itow_s(t1, buf, sizeof(buf) / sizeof(wchar_t), 10);
 
StringCchCopy(plvdi->item.pszText, 
plvdi->item.cchTextMax, 
buf);
 
break;
 
default:
break;
}
 
break;
}
break;
characterInfo - это моя структура, заменишь на свои переменные.
Тут пример и с присвоением и с функцией копирования строки .
В 2 столбец у меня пишется числовое значение поэтому приходится сначала преобразовывать в текстовую строку.
В общем уберёшь...
1
Заблокирован
21.06.2013, 03:28
В общем и целом вот что вышло:
данные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* column headers */
TCHAR *columns[] = {
    "column1", "column2", "column3", "column4"
};  
 
/* some data structure */
struct data {
    TCHAR val1[32];
    TCHAR val2[8];
    TCHAR val3[8];
    TCHAR val4[8];
};
 
/* array if some data structure */
data dataArray[] = {
    { TEXT("00"), TEXT("01"), TEXT("02"), TEXT("03")},
    { TEXT("01"), TEXT("11"), TEXT("12"), TEXT("13")},
    { TEXT("02"), TEXT("21"), TEXT("22"), TEXT("23")}
};

WinProc
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static RECT client_rect;
    static HWND hLvList;
 
    GetClientRect(hwnd, &client_rect);
 
    switch (message)                  /* handle the messages */
    {
    case WM_CREATE:
        {
 
        hLvList = CreateWindowEx(0, WC_LISTVIEW,0,
            LVS_REPORT | LVS_ALIGNLEFT | WS_CHILD | WS_VISIBLE |
            WS_HSCROLL | WS_VSCROLL, client_rect.left, client_rect.top,
            client_rect.right - client_rect.left, client_rect.bottom - client_rect.top,
            hwnd, NULL, ((CREATESTRUCT*)lParam)->hInstance, NULL);
 
        for (int i = 0; i < 4; ++i)
            LV_Insert_Column(hLvList, columns[i], 100, i);
 
        for (int i = 0; i < 3; ++i)
            LV_Insert_Item(hLvList, i);
 
        ShowWindow(hLvList, SW_SHOW);
        UpdateWindow(hLvList);
        break;
        }
 
   case WM_NOTIFY:
        {
            NMLVDISPINFO* plvdi;
 
            switch ( ((LPNMHDR) lParam)->code )
             {
            case LVN_GETDISPINFO:
 
                    plvdi = (NMLVDISPINFO*)lParam;
 
                    switch (plvdi->item.iSubItem)
                    {
                    case 0:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val1;
                        break;
                    case 1:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val2;
                        break;
                    case 2:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val3;
                        break;
                    case 3:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val4;
                        break;
                    default:
                        break;
                    }
                }
                break;
            }
    case WM_DESTROY:
    {
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
    }
    default:                     /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}

LV_Insert_Column
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void LV_Insert_Column(HWND hwndList, const char *s, int Width, int SubItem)
{
    LV_COLUMN col = {0};
    ZeroMemory(&col, sizeof(col));
 
    col.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
    col.fmt = LVCFMT_LEFT;
    col.cx = Width;
    col.pszText = (LPSTR)s;
    col.iSubItem = SubItem;
 
    ListView_InsertColumn(hwndList, SubItem, &col);
}

LV_Insert_Item
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void LV_Insert_Item(HWND hwnd, int item) {
 
    LV_ITEM lvi;
    ZeroMemory(&lvi, sizeof(lvi));
 
    lvi.mask = LVIF_TEXT | LVIF_PARAM;
    lvi.pszText = LPSTR_TEXTCALLBACK;
    lvi.cchTextMax = 32;
    lvi.iItem = item;
    lvi.iSubItem = 0;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 1;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 2;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 3;
    ListView_InsertItem(hwnd, &lvi);
}


Остались вопросы:
1. Возможно ли закрасить айтемы отдельным цветом (цвет шрифта)?
2. Сигнал LVN_SETDISPINFO как его обрабатывать? Допустим я хочу изменить программно (то есть не редактировать в окне, а просто менять в зависимости от событий) значение любого subitem в ходе работы программы. Для этого я просто меняю данные в структуре и посылаю сообщение LVN_SETDISPINFO так?
0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
21.06.2013, 17:23
Цитата Сообщение от BAADF00D Посмотреть сообщение
В общем и целом вот что вышло:
данные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* column headers */
TCHAR *columns[] = {
    "column1", "column2", "column3", "column4"
};  
 
/* some data structure */
struct data {
    TCHAR val1[32];
    TCHAR val2[8];
    TCHAR val3[8];
    TCHAR val4[8];
};
 
/* array if some data structure */
data dataArray[] = {
    { TEXT("00"), TEXT("01"), TEXT("02"), TEXT("03")},
    { TEXT("01"), TEXT("11"), TEXT("12"), TEXT("13")},
    { TEXT("02"), TEXT("21"), TEXT("22"), TEXT("23")}
};

WinProc
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static RECT client_rect;
    static HWND hLvList;
 
    GetClientRect(hwnd, &client_rect);
 
    switch (message)                  /* handle the messages */
    {
    case WM_CREATE:
        {
 
        hLvList = CreateWindowEx(0, WC_LISTVIEW,0,
            LVS_REPORT | LVS_ALIGNLEFT | WS_CHILD | WS_VISIBLE |
            WS_HSCROLL | WS_VSCROLL, client_rect.left, client_rect.top,
            client_rect.right - client_rect.left, client_rect.bottom - client_rect.top,
            hwnd, NULL, ((CREATESTRUCT*)lParam)->hInstance, NULL);
 
        for (int i = 0; i < 4; ++i)
            LV_Insert_Column(hLvList, columns[i], 100, i);
 
        for (int i = 0; i < 3; ++i)
            LV_Insert_Item(hLvList, i);
 
        ShowWindow(hLvList, SW_SHOW);
        UpdateWindow(hLvList);
        break;
        }
 
   case WM_NOTIFY:
        {
            NMLVDISPINFO* plvdi;
 
            switch ( ((LPNMHDR) lParam)->code )
             {
            case LVN_GETDISPINFO:
 
                    plvdi = (NMLVDISPINFO*)lParam;
 
                    switch (plvdi->item.iSubItem)
                    {
                    case 0:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val1;
                        break;
                    case 1:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val2;
                        break;
                    case 2:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val3;
                        break;
                    case 3:
                        plvdi->item.pszText = dataArray[ plvdi->item.iItem ].val4;
                        break;
                    default:
                        break;
                    }
                }
                break;
            }
    case WM_DESTROY:
    {
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
    }
    default:                     /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}

LV_Insert_Column
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void LV_Insert_Column(HWND hwndList, const char *s, int Width, int SubItem)
{
    LV_COLUMN col = {0};
    ZeroMemory(&col, sizeof(col));
 
    col.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
    col.fmt = LVCFMT_LEFT;
    col.cx = Width;
    col.pszText = (LPSTR)s;
    col.iSubItem = SubItem;
 
    ListView_InsertColumn(hwndList, SubItem, &col);
}

LV_Insert_Item
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void LV_Insert_Item(HWND hwnd, int item) {
 
    LV_ITEM lvi;
    ZeroMemory(&lvi, sizeof(lvi));
 
    lvi.mask = LVIF_TEXT | LVIF_PARAM;
    lvi.pszText = LPSTR_TEXTCALLBACK;
    lvi.cchTextMax = 32;
    lvi.iItem = item;
    lvi.iSubItem = 0;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 1;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 2;
    ListView_InsertItem(hwnd, &lvi);
 
    lvi.iItem = item;
    lvi.iSubItem = 3;
    ListView_InsertItem(hwnd, &lvi);
}


Остались вопросы:
1. Возможно ли закрасить айтемы отдельным цветом (цвет шрифта)?
2. Сигнал LVN_SETDISPINFO как его обрабатывать? Допустим я хочу изменить программно (то есть не редактировать в окне, а просто менять в зависимости от событий) значение любого subitem в ходе работы программы. Для этого я просто меняю данные в структуре и посылаю сообщение LVN_SETDISPINFO так?
По 1 пункту.
LVM_SETTEXTBKCOLOR
Установка цвета фона для текста в окне органа управления List View
LVM_SETTEXTCOLOR
Установка цвета текста в окне органа управления List View
LVM_SETBKCOLOR
Установка фонового цвета окна List View
По 2 пункту.
Несколько способов есть...
Можно попробывать так как написал ты.
Можно попробывать послать сообщение на обновление iteam`а.
Можно попробывать ещё вот это...
LVM_SETITEMTEXT
Установка названия элемента или текста, соответствующего заданному дополнительному элементу
В общем пробуй...
Я ещё не подходил к этому вопросу...

Добавлено через 12 часов 17 минут
Напиши плз потом как реализовал обновление субайтемов...
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,851
Записей в блоге: 12
21.06.2013, 17:23
Цитата Сообщение от BAADF00D Посмотреть сообщение
Допустим я хочу изменить программно (то есть не редактировать в окне, а просто менять в зависимости от событий) значение любого subitem в ходе работы программы. Для этого я просто меняю данные в структуре и
обновляешь нужный айтем:

C++
1
2
3
4
5
// добавил к твоему коду кнопку, которая меняет один из элементов массива данных:
case BTN_ID :
    _tcscpy(dataArray[0].val2, TEXT("tx")); // изменил
    ListView_Update(hLvList, 0); // нулевая строка - значит, обновить нулевой айтем
    break;
, и увидел измененное значение. Не надо ничего лишнего придумывать...
2
Заблокирован
09.09.2013, 19:53
UI, комментарий к топику #6. Оказалось что создать LISTVIEW просто вызовом CreateWindow() -- мало. В моем случае программа написана на windows 7 некорректно работает на windows XP, конкретно -- не создается LISTVIEW. Ссылка на msdn с описанием: http://msdn.microsoft.com/en-u... s.85).aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2013, 19:53
Помогаю со студенческими работами здесь

Добавление строк c listbox на listbox WinApi
Здравствуйте, подскажите пожалуйста как правильно сделать, чтобы выделенные строки в первом листбоксе автоматически добавлялись на второй...

Как выделить цветом или иконкой папки и файлы в Listbox?
Здравствуйте, появилась идея создать что-то типо файлового менеджера. Есть листбокс, там отображаются папки и файлы, возможно ли сделать...

Submit c иконкой
собственно вопрос в теме.. можно ли изменить стандартную кнопку &lt;%= form.submit %&gt; на свою иконку??

Меню над иконкой
Не знаю как это правильно называется, но как сделать меню над иконкой по клику ПКМ, примерно как в стиме

Проблема с иконкой в трее
Доброго времени суток. Помогите, please, в следующем вопросе: Моя прога должна висеть при загрузке windows в трее. Создаю икоку из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru