全局热键与特定的非子窗口关联。 用户可使用它从系统的任何部分激活窗口。 应用程序通过将 WM_SETHOTKEY 消息发送到特定窗口来设置该窗口的全局热键。 例如,如果 m_HotKeyCtrl
是 CHotKeyCtrl 对象,并且 pMainWnd
是指向在按下热键时要激活的窗口的指针,你可使用以下代码将控件中指定的热键与 pMainWnd
指向的窗口相关联。
WORD wKeyAndShift = static_cast<WORD>(m_HotKeyCtrl.GetHotKey());
this->SendMessage(WM_SETHOTKEY, wKeyAndShift);
每当用户按下全局热键时,指定的窗口都会接收一条 WM_SYSCOMMAND 消息,该消息将 SC_HOTKEY 指定为命令的类型。 此消息还会激活接收它的窗口。 由于此消息不包含按下的确切键的任何相关信息,因此使用此方法没法区分可能附加到同一窗口的不同热键。 热键始终有效,直到发送 WM_SETHOTKEY 的应用程序退出为止。