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

Sti*_*sis 5 c++ winapi mfc acceleratorkey

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

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

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

Cod*_*ard 1

您也可以RegisterHotKey()在主窗口中使用。这将产生一个副作用,即即使在不同的应用程序中按下新的热键也会触发。GetCurrentProcessId()您可以通过比较来解决这个问题GetWindowThreadProcessId(GetForegroundWindow())