C++ 为什么父窗口不';无法从子组合框获取通知?

C++ 为什么父窗口不';无法从子组合框获取通知?,c++,winapi,combobox,C++,Winapi,Combobox,我用ComboBox创建了一个简单的窗口(插入了一些位图),我需要知道用户何时从ComboBox中选择了一个项目(我想我需要CBEN_ENDEDIT)。但父窗口除了一个值之外,不会从该组合框中获取任何WM_通知。有人能帮我吗?为什么我不能得到通知 //Window creating WNDCLASSEX wcx={0}; wcx.cbSize = sizeof(WNDCLASSEX); wcx.lpfnWn

我用ComboBox创建了一个简单的窗口(插入了一些位图),我需要知道用户何时从ComboBox中选择了一个项目(我想我需要CBEN_ENDEDIT)。但父窗口除了一个值之外,不会从该组合框中获取任何WM_通知。有人能帮我吗?为什么我不能得到通知

 //Window creating
        WNDCLASSEX wcx={0}; 
        wcx.cbSize         = sizeof(WNDCLASSEX);           
        wcx.lpfnWndProc    = WndProc; 
        wcx.hInstance      = hInst;   
        RegisterClassEx(&wcx)         

        HWND parent =CreateWindowEx()//-Created with some args


 //WndProc
        switch (uMsg)
        {
        case WM_CREATE:
            {
                //-Creating comboboxex
                DWORD dwStyle = CBS_DROPDOWNLIST | WS_CHILD |WS_VISIBLE;
                HWND child = CreateWindowEx(0, WC_COMBOBOXEX,0, dwStyle, x, y, w, h,  parent, IDC_CMBX, hinst, 0) 
            }
        case WM_NOTIFY :
            {
                LPNMHDR nmhdr = (LPNMHDR)lParam;
                //Here nmhdr->code value is always 4294967279 -I think it is NM_SETCURSOR ?
            }
         }

非常感谢。

您可能想要的是
CBN\u SELCHANGE
。 从MSDN:

当用户更改组合框列表框中的当前选择时,将发送CBN_SELCHANGE通知消息。用户可以通过单击列表框或使用箭头键来更改选择。组合框的父窗口以WM_命令消息的形式接收此通知,wParam参数的高阶字中包含CBN_SELCHANGE


因此,在这种情况下,您必须处理WM_命令而不是WM_NOTIFY,并检查wParam参数的高阶字是否为CBN_SELCHANGE。

是的……是的。你救了我。非常感谢你。。。。。。。。。。。。。顺便问一下,为什么没有任何WM_NOTIFY从组合框子项进入窗口?一些控件使用WM_NOTIFY,一些控件使用WM_命令。WM_NOTIFY的优点是,它允许以NMHDR结构的形式传递更多信息,但并非所有控件都需要/使用该结构。这里有一篇有趣的文章: