返回

m_OldHook = ::SetWindowsHookExW( WH_CALLWNDPROC, WindowsHook, (HINSTANCE)::GetWindowLong(hWnd, GWL_HINSTANCE), ::GetCurrentThreadId() );

在钩子里处理WM_MEASUREITEM消息的时候

UINT nIDCtl = (UINT)pStruct->wParam;LPMEASUREITEMSTRUCT pMS = (LPMEASUREITEMSTRUCT)pStruct->lParam;if (nIDCtl == 0){ pMS->itemHeight = 15; pMS->itemWidth = 150;}return 0;

上下文:switch (pStruct->message){case WM_INITMENUPOPUP: { if ((HMENU)pStruct->wParam && ::IsMenu((HMENU)pStruct->wParam)) winx::SetMenuOwnerDraw((HMENU)pStruct->wParam); return 0; }case WM_MEASUREITEM: { UINT nIDCtl = (UINT)pStruct->wParam; LPMEASUREITEMSTRUCT pMS = (LPMEASUREITEMSTRUCT)pStruct->lParam; if (nIDCtl == 0) { pMS->itemHeight = 15;//改变无效? pMS->itemWidth = 150;//改变无效? } return 0; }case WM_DRAWITEM: { winx::MenuEx::DrawItem((LPDRAWITEMSTRUCT)pStruct->lParam); return 0; }

为什么在case WM_MEASUREITEM:的时候改变无效?

名字: 自动排版 密码:

回复 | (1043) | renfengxing | 2006-04-06 11:17:23