2012-03-13 8 views
5

Mam okno dialogowe z dwoma kontrolkami: widok drzewa i list box. Mam również program obsługi wiadomości dla mojego okna dialogowego.list box notifications

case WM_NOTIFY: 
     { 
      switch(LOWORD(wParam)) 
      { 
       case IDC_LIST1: //we NEVER comes here 
         if(((LPNMHDR)lParam)->code == NM_CLICK) 
         { 
          //do some work; 
          return (INT_PTR)TRUE; 
         } 
         break; 
       case IDC_TREE1: 
         if(((LPNMHDR)lParam)->code == NM_DBLCLK) 
         { 
         //do some work; 
         return (INT_PTR)TRUE; 
         } 
         break; 
      } 
     } 
     break; 

Więc, nie mogę zrozumieć, dlaczego powiadomienia z pudełka drzewa pochodzi pomyślnie, ale powiadomienia z listy nigdy nie przychodzi, pomimo faktu, że we właściwościach formant pola listy”Zawiadom wartość jest ustawiona TRUE. Dziękuję.

Odpowiedz

11

Sprawdźmy dokumentację.

List Box Styles:

LBS_NOTIFY

Powoduje listy, aby wysłać kod zgłoszenia do okna nadrzędnego, gdy użytkownik kliknie element pole listy (LBN_SELCHANGE), dwukrotne kliknięcie elementu () lub anuluje wybór (LBN_SELCANCEL).

LBN_SELCHANGE:

Powiadamia wniosku, że wybór w polu listy zmieniły się w wyniku wprowadzonych przez użytkownika. Okno nadrzędne w polu listy otrzymuje ten kod powiadomienia za pośrednictwem komunikatu WM_COMMAND.

LBN_DBLCLK:

Powiadamia aplikację, użytkownik ma podwójnym kliknięciu elementu w polu listy. Okno nadrzędne w polu listy otrzymuje ten kod powiadomienia za pośrednictwem komunikatu WM_COMMAND.

LBN_SELCANCEL:

Powiadamia aplikację, użytkownik anulował zaznaczenie w polu listy. Okno nadrzędne w polu listy otrzymuje ten kod powiadomienia za pośrednictwem komunikatu WM_COMMAND.

Wnioski: Skrzynki Lista używać WM_COMMAND powiadomić rodzica, a nie WM_NOTIFY.