CTRL+S
当用户在无模式对话框中按下时,我想执行一些操作。加速器将是完美的,除了我无法控制线程的消息循环(想想插件),所以我不能调用TranslateAccelerator
.
嵌套消息循环不是一个选项,因为主应用程序在调用PeekMessage
.
- 有什么方法可以“强制”现有的消息循环来处理我的加速器?
- 除了加速器还有其他方法可以捕捉
CTRL+S
吗?
我考虑过使用 Window hooks on WH_GETMESSAGE
,它在从GetMessage
or返回之前被调用PeekMessage
。但是我不确定我成功调用后会发生什么TranslateAcellerator
,我不能让应用程序知道我处理了它。
WH_MSGFILTER
将需要应用程序实现对 的调用CallMsgFilter
,而使用调试器一目了然。
我的最后一个想法是将控件子类化,这是我试图避免的。这将需要一些机制来向父窗口发出按键事件信号,我认为这不是一个很好的设计。此外,如果我添加更多控件,我将不得不对每一个控件进行子类化。
感谢您的任何提示。