我们有一个非常大的内部MFC应用程序。它有一个带有菜单栏的主窗口,以及数百个独特的子窗口(没有菜单栏),它们显示在主窗口的顶部(并非全部同时显示)。这些子窗口实现为CDialog
,但无模式运行(通过CreateWindow
,而不是DoModal
)。他们的父HWND
设置为NULL
。
我们最近收到了一个功能请求 - 即使其中一个子窗口是活动窗口,也允许主窗口中的特定菜单栏加速器工作。从用户的角度来看,这是有道理的。
这可以通过应用程序范围的键盘钩子很容易伪造,看着那个精确的击键,但我想知道是否有更清洁的方式?
答案 0 :(得分:1)
您也可以在主窗口中使用RegisterHotKey()
。这将产生副作用,即使在不同的应用程序中按下,新热键也会触发。您可以通过将GetCurrentProcessId()
与GetWindowThreadProcessId(GetForegroundWindow())