列表框通知

Myo*_*tis 5 c++ winapi visual-studio-2010

我有两个控件的对话框:树视图列表框.我的对话框也有消息处理程序.

 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;
Run Code Online (Sandbox Code Playgroud)

所以,我无法理解为什么来自树盒的通知成功,但来自列表框的通知永远不会出现,尽管事实上在列表框的属性'控制通知值设置为TRUE.谢谢.

Ray*_*hen 11

我们来看看文档.

列表框样式:

LBS_NOTIFY

每当用户单击列表框项目(LBN_SELCHANGE),双击项目(LBN_DBLCLK)或取消选择(LBN_SELCANCEL)时,列表框就会向父窗口发送通知代码.

LBN_SELCHANGE:

通知应用程序列表框中的选择因用户输入而发生更改.列表框的父窗口通过WM_COMMAND消息接收此通知代码.

LBN_DBLCLK:

通知应用程序用户双击列表框中的项目.列表框的父窗口通过WM_COMMAND消息接收此通知代码.

LBN_SELCANCEL:

通知应用程序用户已取消列表框中的选择.列表框的父窗口通过WM_COMMAND消息接收此通知代码.

结论:列表框用于WM_COMMAND通知父级,而不是WM_NOTIFY.