ListBox не реагирует на двойной щелчок

Тема в разделе "WASM.BEGINNERS", создана пользователем Xenobius, 18 янв 2010.

  1. Xenobius

    Xenobius New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2009
    Сообщения:
    5
    Ситуация следующая. При двойном щелчке на элементе списка должен появится
    MessageBox с наименованием нажатого элемента. Этого не происходит. Смотрю под
    отладчиком (OllyDbg). При двойном щелчке как и должно быть управление передается
    оконной процедуре, но вот когда доходит до строки cmp dword ptr [ebp+12h],lbn_dblclk
    в стеке по адресу ebp+12h находится значение 02С80002. Т.е. в младшем байте находится как раз нужный код сообщения LBN_DBLCLK - 2. Но почему-то в результате сравнения флаг нуля не выставляется и соответственно никакого MessageBox не появляется. При изменении флага нуля вручную в момент перехода все работает.
    В чем может быть проблема?
    Да и еще. Я читал, что ListBox будет реагировать на сообщение LBN-DBLCLK если он имеет стиль LBS_NOTIFY. У меня он выставлен отладчик его отображает как единицу:
    Style = WS_CHILD|WS_TABSTOP|WS_VISIBLE|WS_VSCROLL|WS_THICKFRAME|WS_BORDER|1


    Код (Text):
    1. WndProc proc
    2.  push ebp
    3.  mov ebp,esp
    4.  push ebx
    5.  push esi
    6.  push edi
    7.  cmp dword ptr [ebp+0ch], WM_DESTROY
    8.  je WMDESTROY
    9.  cmp dword ptr [ebp+0ch], WM_CREATE
    10.  je WMCREATE
    11.  cmp dword ptr [ebp+0ch], WM_COMMAND
    12.  je WMCOMMND
    13.  jmp DEFWINDOWPROC
    14.  
    15.  WMCOMMND:
    16.     mov eax, HWNDBTN
    17.     cmp dword ptr [ebp+14h], eax
    18.  ;на выход
    19.     je WMDESTROY
    20.     mov eax,HWNDLST
    21.     cmp dword ptr [ebp+14h],eax ;список?
    22.     jne NOLIST
    23.  ;работаем со списком
    24.     cmp dword ptr [ebp+12h],LBN_DBLCLK
    25.     jne NOLIST
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. cmp dword ptr [ebp+12h],LBN_DBLCLK
    там не дворд, а ворд, поэтому надо бы word ptr
     
  3. Xenobius

    Xenobius New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2009
    Сообщения:
    5
    Точняк! Спасибо, заработало. Опечатался по инерции, а мучаюсь уже неделю :)
     
  4. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Код (Text):
    1. cmp dword ptr [ebp+12h],LBN_DBLCLK
    dword? :derisive: