在MFC的无模式对话框里怎么去响应消息?
在MFC的CPropertySheet里又怎么响应键盘消息?。
HOOK
如果WM_KEYDOWM目标窗口是Control消息流向如下:下面所说的“处理了”的意思是返回true.
CWinThread::PUMPMESSAGE()从消息队列中取得WM_KEYDOWM
↓
CWinThread::PreTranslateMessage处理--->使用WalkPreTranslateTree让从该控件遍列其父窗口直到主 窗口,让他们依次处理,如果其中一个处理了则结束循环。
其实是分别调用他们的PreTranslateMessage
↓未处理
::TranslateMessage-->产生WM_CHAR消息放入消息队列
↓
::DispathMessage -->让该控件窗口消息函数WindowProc处理,遍列消息表找到WM_KEYDOWN的消息影射函数OnKeyDown在其中处理
↓ 未处理
到该控件的DefWindowProc中作最后的处理,如记录按键的次数以供后 面处理。
↓
该消息处理结束,再取的下一个消息WM_CHAR
↓
CWinThread::PreTranslateMessage处理-->和上面处理WM_KEYDOWM一样
可以在CAppDlg::PreTranslateMessage()、CDebugEdit::PreTranslateMessage()、CDebugEdit::WindowProc()、CDebugEdit::OnChar()、CDebugEdit::DefWindowProc()处理输入字符,但后面的必须保证前面消息流正常运行,正确处理之后保证返回true
在::PreTranslateMessage中应该可以获得你要的消息