Как обработать WM_COMMAND в COMBOBOXe?

Тема в разделе "WASM.BEGINNERS", создана пользователем Valentin, 24 фев 2008.

  1. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    130
    Выбираю в COMBOBOXe строку, в этот момент (после выбора) необходимо провести ряд действий, связанных со значением этой строки.
    Сообщения WM_COMMAND - CBN_SELENDOK почему-то не реагируют :
    .if eax == WM_COMMAND
    mov eax, [wParam]
    .if eax ==CBN_SELENDOK
    invoke MessageBox,NULL,ADDR buffer100,ADDR Mes12,MB_YESNO OR MB_ICONQUESTION OR MB_SYSTEMMODAL
    ..............................................................

    т.е. MessageBox не всплывает.
    Подскажите, пожалуйста, что не так, где ошибка?
    Заранее благодарен, Valentin.
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Дело в том, что для сообщения WM_COMMAND - WPARAM содержит два значения: код содержится в верхней части, а идентификатор COMBOBOX - в нижней:
    Код (Text):
    1. .if eax == WM_COMMAND
    2.   mov eax, [wParam]
    3.   shr eax, 16
    4.   .if eax == CBN_SELENDOK
    5.     invoke ...
    К слову, CBN_SELENDOK не будет получен если пользователь выберет елемент с помощью клавиатуры. Лучше использовать CBN_SELCHANGE.
     
  3. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    130
    AsmGuru62

    Спасибо, попробую.
     
  4. Valentin

    Valentin Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2007
    Сообщения:
    130
    AsmGuru62

    Большое спасибо, все заработало.