【发布时间】:2017-07-13 15:43:18
【问题描述】:
我有一个带有上下文菜单的基于 MFC 对话框的应用程序。上下文菜单中的条目会弹出一个模式对话框。但是在第二个对话框中的任何地方单击鼠标都不会做任何事情。通过主菜单调出相同的对话框效果很好。这就像上下文菜单以某种方式窃取了鼠标点击。我打开上下文菜单的代码是:
void Cxxx::OnContextMenu(CWnd* pWnd, CPoint ptScreen)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MAIN_WINDOW_RIGHT_MOUSE));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, ptScreen.x, ptScreen.y, this);
}
上下文菜单用来调出对话框的代码是:
void Cxxx::OnPaste()
{
CPasteDlg Dlg;
...
if (Dlg.DoModal() != IDOK){
...
}
}
OnPaste 代码与主菜单使用的 api 完全相同,并且在主菜单中运行良好。
有谁知道我做错了什么,即无论何时通过上下文菜单调出该粘贴对话框,鼠标都无法在该粘贴对话框中工作?
如果重要的话,我在 Win7-64 位上使用 Visual Studio 11。
提前感谢您提供的任何帮助。
【问题讨论】:
-
只是猜测,给dlg构造函数正确的父窗口,这可能是个问题,当你有其他弹出窗口时......
-
你试过CPasteDlg dlg(this);吗?
标签: visual-c++ mfc modal-dialog contextmenu