Ещё одна проблема. Как отследить изменение ComboBox в диалоговом окне?
Диалоговое окно сделано через ресурсы. На сообщение WM_NOTOFY, и тем более на CBN_XXX никак не реагирует. Если то же самое сделать вручную через CreateWindow, то эти сообщения ловятся. Как быть?
PS. Это мне надо, чтобы в зависимости от выбранного в ComboBox элемента, менять данные в другом окне.
Диалог создан через ресурсы. Пытаюсь инициализировать ComboBox строками из STRINGTABLE. Строки добавляются (команда CB_GETCOUNT возвращает правильный результат), но не отображаются. Вот код:
…
hwndCtrl = GetDlgItem(hDlg, IDC_TYPE);
for (i = 0; i <= 5; i++)
{
LoadString(hInstance, i, szMessage, 255);
SendMessage(hwndCtrl, CB_ADDSTRING, 0, (LPARAM) szMessage);
}
i = SendMessage(hwndCtrl, CB_GETCOUNT, 0, 0);
…
---
Если в диалоговом окне «вручную» создать тот же ComboBox, то всё работает нормально. Вот код, который работает:
…
hwndCtrl = CreateWindow("ComboBox", NULL,
WS_CHILD | WS_VISIBLE | CBS_DROPDOWN | CBS_SORT |
WS_VSCROLL | WS_TABSTOP, 30, 30, 200, 200,
hDlg, NULL, hInstance, NULL);
for (i = 0; i <= 5; i++)
{
LoadString(hInstance, i, szMessage, 255);
SendMessage(hwndCtrl, CB_ADDSTRING, 0, (LPARAM) szMessage);
}
i = SendMessage(hwndCtrl, CB_GETCOUNT, 0, 0);
…
---
Стили ComboBox’а одинаковы в обоих примерах.
Не получается инициализировать ComboBox и через INITDLG (заполнение строк в редакторе ресурсов) - они также не отображаются.
Ещё одна проблема. Как отследить изменение ComboBox в...14.10.07 07:57 Автор: Vedrus <Serokhvostov Anton> Статус: Member
Ещё одна проблема. Как отследить изменение ComboBox в диалоговом окне?
Диалоговое окно сделано через ресурсы. На сообщение WM_NOTOFY, и тем более на CBN_XXX никак не реагирует. Если то же самое сделать вручную через CreateWindow, то эти сообщения ловятся. Как быть?
PS. Это мне надо, чтобы в зависимости от выбранного в ComboBox элемента, менять данные в другом окне.
[Win32] Посмотри размер выпадающего окна25.09.07 09:45 Автор: amirul <Serge> Статус: The Elderman
> Диалог создан через ресурсы. Пытаюсь инициализировать > ComboBox строками из STRINGTABLE. Строки добавляются > (команда CB_GETCOUNT возвращает правильный результат), но > не отображаются. Вот код:
Нажми на стрелку вниз прямо в редакторе ресурсов и растяни открывшееся окно до нужного размера.
>
> hwndCtrl = GetDlgItem(hDlg, IDC_TYPE);
>
> for (i = 0; i <= 5; i++)
> {
> LoadString(hInstance, i, szMessage, 255);
> SendMessage(hwndCtrl, CB_ADDSTRING, 0, (LPARAM)
> szMessage);
>
---
На всякий случай напоминаю, что в windowsx.h есть очень удобные макросы для сокращения писанины.
Кроме того, взгляни все таки в сторону MFC/WTL/wxWidgets/еще чего нибудь. Удобно ж ведь.
Ой… amirul, в жизни бы не додумался. Спасибо. А в...25.09.07 12:20 Автор: Vedrus <Serokhvostov Anton> Статус: Member