[英]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.