Вобщем, создать создать и заполнить сей компонент (не обертку из Builder) удалось элементарно (статья на МСДН). Но дальше не могу понять — там же описано, что при выборе элемента я получаю сообщение
CBEN_ENDEDIT Signals that the user has selected an item from the drop-down list or has concluded an edit operation within the edit box.
Я ловлю это сообщение так
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId)
{
case CBEN_ENDEDIT:
MessageBoxEx(hWindow,"","Test",MB_OK,419);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
но ничего не получаю...
06.06.05 21:26: Перенесено модератором из 'C/C++' — Павел Кузнецов
Здравствуйте, Zhouck, Вы писали:
Z>Вобщем, создать создать и заполнить сей компонент (не обертку из Builder) удалось элементарно (статья на МСДН). Но дальше не могу понять — там же описано, что при выборе элемента я получаю сообщение
Z>CBEN_ENDEDIT Signals that the user has selected an item from the drop-down list or has concluded an edit operation within the edit box.
Z>Я ловлю это сообщение так
Z>Z> case WM_COMMAND:
Z> wmId = LOWORD(wParam);
Z> wmEvent = HIWORD(wParam);
Z> switch(wmId)
Z> {
Z> case CBEN_ENDEDIT:
Z> MessageBoxEx(hWindow,"","Test",MB_OK,419);
Z> break;
Z> default:
Z> return DefWindowProc(hWnd, msg, wParam, lParam);
Z> }
Z>
Z>но ничего не получаю...
Во-первых, нужно анализировать switch(wmEvent) — код события находится в верхнем слове. В нижнем слове — wmId — идентификатор ресурса (контрола) в диалоге. Скорее всего поэтому не работает.
Во-вторых, обычно для отлова события "выбор элемента комбо-бокса" используют CBN_SELCHANGE. Приведенное тобой сообщение достаточно специфичное, и предназначено для работы с Edit-контролом, входящим в комбо-бокс.
Кстати, wmId тоже нужно анализировать, т.к. скорее всего у тебя в диалоге куча контролов, которые могут генерировать WM_COMMAND или даже несколько комбо-боксов

.