2012-03-13 29 views
5

İki denetimle iletişim kutusu: ağaç görünümü ve liste kutusu. Ayrıca iletişim kutum için ileti işleyici var. Yaniliste kutusu bildirimleri

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; 

ağaç kutusundan bildirimleri başarıyla geliyor neden anlayamıyorum, ama liste kutusundan bildirimleri asla DOĞRU ayarlanır liste kutusu' denetimi özelliklerinde değerini bildir olmasına rağmen, gelir. Teşekkür ederiz.

cevap

11

Belgeleri kontrol edelim.

List Box Styles:

LBS_NOTIFY

Kullanıcı bir liste kutusu öğesi (LBN_SELCHANGE) tıkladığında ana pencereye bir bildirim kodu göndermek için liste kutusu neden olur, (bir öğeyi çift tıkladığında LBN_DBLCLK) veya seçimi iptal eder (LBN_SELCANCEL).

LBN_SELCHANGE

:

bir liste kutusu seçim kullanıcı girişi sonucunda değişmiş bir uygulama bildirir. Liste kutusunun üst penceresi, bu bildirim kodunu WM_COMMAND iletisiyle alır.

LBN_DBLCLK:

kullanıcı bir liste kutusundaki çift tıklandığında bir öğe vardır uygulamayı bildirir. Liste kutusunun üst penceresi, bu bildirim kodunu WM_COMMAND iletisiyle alır.

LBN_SELCANCEL:

kullanıcı bir liste kutusundaki seçimi iptal etti uygulamayı bildirir. Liste kutusunun üst penceresi, bu bildirim kodunu WM_COMMAND iletisiyle alır.

Sonuç: Liste kutuları ebeveyni değil WM_NOTIFY bildirmek için WM_COMMAND kullanın.