【发布时间】:2011-01-30 21:28:59
【问题描述】:
我在我的应用中添加了一个弹出菜单,并使用以下代码激活它:
HMENU contextMenu;
int CALLBACK WinMain(...)
{
HMENU hContext = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_CONTEXT_MENU));
contextMenu = GetSubMenu(hContext, 0);
}
case WM_RBUTTONDOWN:
{
POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
ClientToScreen(hWndSDL, &pt);
SetForegroundWindow(hWndSDL);
TrackPopupMenu(contextMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hWndSDL, NULL);
break;
}
如果我弹出菜单,然后单击窗口的标题栏,菜单就会消失,但窗口仍然不会响应窗口客户区域之外的任何点击。
我为键盘上的一个字母设置了KEYUP来调用ReleaseCapture(),并允许窗口的非客户区再次开始响应。但是当菜单被关闭时,这种行为应该是自动的,不是吗?
有人有什么想法吗?
谢谢
【问题讨论】:
-
听起来像是错误的菜单或没有父窗口
-
不可能,因为一旦菜单弹出,应该是父窗口的窗口在客户区之外停止响应。