2012-03-13 2 views
5

У меня есть диалоговое окно с двумя элементами управления: вид на дерево и блок списка. У меня также есть обработчик сообщений для моего диалогового окна.Список полевых уведомлений

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; 

Таким образом, я не могу понять, почему уведомления из коробки дерева приходит успешно, но уведомления из списка никогда не приходит, несмотря на то, что в свойствах управления Списка»Notify значения устанавливаются ИСТИНЫ. Спасибо.

ответ

11

Давайте проверим документацию.

List Box Styles:

LBS_NOTIFY

Вызывает окно списка, чтобы послать код уведомления в родительском окне, когда пользователь щелкает элемент окна списка (LBN_SELCHANGE), дважды щелкает элемент (LBN_DBLCLK) или отменяет выбор (LBN_SELCANCEL).

LBN_SELCHANGE:

уведомляет приложение о том, что выделение в окне списка изменилось в результате ввода данных пользователя. Родительское окно окна списка получает этот код уведомления через сообщение WM_COMMAND.

LBN_DBLCLK:

Уведомляет приложение, которое пользователь имеет двойной щелчок элемента в списке. Родительское окно окна списка получает этот код уведомления через сообщение WM_COMMAND.

LBN_SELCANCEL:

Уведомляет приложение, которое пользователь отменил выделение в окне списка. Родительское окно окна списка получает этот код уведомления через сообщение WM_COMMAND.

Заключение: Список коробки использовать WM_COMMAND, чтобы уведомить родителей, а не WM_NOTIFY.

Смежные вопросы