关于清单方块(listbox)类别的 WM_COMMAND消息
今天发现一个奇怪的问题,创建了两个listbox类控件,点击其中一个会产生两个WM_COMMAND消息。
只创建一个listbox类控件时,第一次点击也会产生两个WM_COMMAND消息。如果加入SetFocus的话就正常(一个listbox类控件)
代码如下,无关代码都去掉了:
- C/C++ code
case WM_CREATE: hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE); cxChar=LOWORD(GetDialogBaseUnits()); cyChar=HIWORD(GetDialogBaseUnits()); hwndYear=CreateWindow(TEXT("listbox"),NULL, WS_CHILD|WS_VISIBLE|LBS_STANDARD, cxChar,cyChar*3, cxChar*8, cyChar*2, hwnd,(HMENU)ID_YEAR, hInstance, NULL); hwndMonth=CreateWindow(TEXT("listbox"),NULL, WS_CHILD|WS_VISIBLE|LBS_STANDARD|LBS_SORT, cxChar,cyChar*10, cxChar*8+GetSystemMetrics(SM_CXVSCROLL), cyChar*2, hwnd,(HMENU)ID_MONTH, hInstance, NULL); return 0; case WM_COMMAND: ++count; return 0;实在想不出什么原因,望高手指点一二
[解决办法]
不奇怪啊,一个获得焦点,另一个就失去焦点,两者都是WM_COMMAND消息
- C/C++ code
case WM_COMMAND: { static int count; ++count; if(LBN_KILLFOCUS==HIWORD(wParam) ) ;// else if(LBN_SETFOCUS==HIWORD(wParam) ) ;// } break;
[解决办法]
[解决办法]