我有一个MFC MDI应用程序,它将Ctrl-F定义为键盘加速器。 这个应用程序托管一个WinForm对话框。我的问题是我想要从这个子WinForm对话框中捕获Ctrl-F,但是MFC主机似乎正在吞下它。
你认为有一种方法可以在WinForm孩子中接收那些按键吗?
答案 0 :(得分:0)
我认为在WinForm子项中定义自己的消息循环可能会有效。 e.g。
while(true) {
Message m;
GetMessage(out m);
if (m.Msg == WM_QUIT)
break;
DispatchMessage(m);
}
我想当你在WinForm上键入CTRL + F时,主消息循环即你的MFC主机应用程序检索消息,因为焦点在WinForm上,它不会做任何事情。如果你有自己的WinForm消息循环和加速键,那么它可能会有效。
答案 1 :(得分:0)
我找到了一个有效的解决方案。 显示c#WinForm时,请使用重载
Form.Show(IWin32Window owner)
并将MFC主机Hwnd作为所有者传递。 现在一切都按预期工作了。