【发布时间】:2013-09-09 09:41:47
【问题描述】:
我有一个 MFC MDI 应用程序,它将 Ctrl-F 定义为键盘加速器。 这个应用程序承载一个 WinForm 对话框。我的问题是我想从这个子 WinForm 对话框中捕获 Ctrl-F,但 MFC 大型机似乎正在吞噬它。
- 我可以在 WinForm 对话框中检测到其他键盘快捷键(如果它们未在快捷键表中定义)
- 如果编辑对话框也是MFC,我想我也可以为这个对话框定义和加载一个加速器,然后使用ProcessMessageFilter
- 在 WinForm 中,我尝试了覆盖 ProcessCmdKey 和监听 KeyDown 事件均无济于事
您认为有一种方法可以在 WinForm 子项中接收这些按键吗?
【问题讨论】:
-
注册为加速键的组合键不会生成键盘消息。它们被
TranslateAccelerator翻译成WM_COMMAND/WM_SYSCOMMAND并且不会进入DispatchMessage调用。如果快捷键表中未列出,我不确定您可以检测到键盘快捷键的陈述。这听起来像是解决方案,但我想我错过了一些东西。 -
我想在mfc主机和winform中都使用Ctr-F。
-
即:我想把Ctrl-F作为加速器留在主机中,但是当WinForm对话框在前台时,它应该也可以捕获Ctrl-F快捷键
标签: winforms mfc accelerator