2012-03-13 18 views
5

Tengo un cuadro de diálogo con dos controles: vista de árbol y cuadro de lista. También tengo el controlador de mensajes para mi cuadro de diálogo.notificaciones de cuadro de lista

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; 

Por lo tanto, no puedo entender por qué notificaciones de boj viene con éxito, pero las notificaciones de cuadro de lista nunca llega, a pesar del hecho de que en las propiedades de control de lista de cuadro' Notificar valor se establece VERDADERO. Gracias.

Respuesta

11

Vamos a verificar la documentación.

List Box Styles:

LBS_NOTIFY

Hace que el cuadro de lista para enviar un código de notificación a la ventana padre cada vez que el usuario hace clic en un elemento del cuadro de lista (LBN_SELCHANGE), haga doble clic en un elemento (LBN_DBLCLK), o cancela la selección (LBN_SELCANCEL).

LBN_SELCHANGE:

notifica a la aplicación que la selección en un cuadro de lista ha cambiado como resultado de la entrada del usuario. La ventana padre del cuadro de lista recibe este código de notificación a través del mensaje WM_COMMAND.

LBN_DBLCLK:

notifica a la aplicación que el usuario tiene doble clic en un elemento en un cuadro de lista. La ventana padre del cuadro de lista recibe este código de notificación a través del mensaje WM_COMMAND.

LBN_SELCANCEL:

notifica a la aplicación que el usuario ha cancelado la selección en un cuadro de lista. La ventana padre del cuadro de lista recibe este código de notificación a través del mensaje WM_COMMAND.

Conclusión: Los cuadros de lista utilizan WM_COMMAND notificar a los padres, no WM_NOTIFY.

Cuestiones relacionadas