繁体   English   中英

在无模式对话框窗口中通过加速键

[英]Pass through accelerator key while modeless dialog window up

我们有一个非常大的内部MFC应用程序。 它具有一个带菜单栏的主窗口,以及数百个唯一的子窗口(无菜单栏),这些子窗口显示在主窗口的顶部(并非同时显示)。 这些子窗口实现为CDialog但是无模式运行(通过CreateWindow ,而不是DoModal )。 他们的父级HWND设置为NULL

我们最近收到了一项功能请求-即使子窗口之一是活动窗口,也可以从主窗口中使用特定的菜单栏加速器。 从用户的角度来看,这是有道理的。

可以通过应用程序范围的键盘挂钩很容易地伪造它,并注意确切的击键,但是我想知道是否有更干净的方法?

您也可以在主窗口中使用RegisterHotKey() 即使在其他应用程序中按下该键,也会触发新的热键触发的副作用。 您可以通过将GetCurrentProcessId()GetWindowThreadProcessId(GetForegroundWindow())进行比较来解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM