VC,对话框为何不响应OnKeyDown消息?

来源:百度知道 编辑:UC知道 时间:2024/05/20 21:42:06
一个对话框,上面有一个静态文本控件。 我通过类向导给这个对话框添加了一个OnKeyDown消息函数,想接收键盘输入的字母,然后在静态文本控件上显示出来。但是运行后,对话框不接收键盘字母输入,根本就没有走到OnKeyDown()函数中去! 这是怎么回事?
(对不起,我现在只有3分,不足以表达我的谢意,请原谅)
BOOL CZZZDlg::PreTranslateMessage(MSG* pMsg) {
if(pMsg->message == WM_KEYDOWN) {
//////
}
return CDialog::PreTranslateMessage(pMsg);
}
这样,还是不行。按任何键都不会到这个PreTranslateMessage()中来。

你用WM_CHAR消息试试。
告诉你一个方法。你可以知道到底Windows向你的窗口都发送了哪些消息。你可以知道到底有没有WM_KEYDOWN消息了。
依次选择:
开始->所有程序->Microsoft Visual Studio 6.0 ->Microsoft Visual Studio 6.0 Tools->Spy++
使用Spy++能够捕获特定窗口的所有消息并显示出来供你分析。
操作方法如下:
点菜单里的Spy->Windows然后下面就会显示出来当前所有的窗口,你选中你的对话框窗口点右键选message就会打开一个Message监控窗口,你试着对你的对话框操作一下,就会发现此窗口得到的消息都会被显示出来了。
因为默认是所有消息全都捕获,所以看起来有点乱,你若想只显示关心的某一条或几条消息就选菜单里的message->Option选项,打开第二个选项卡Messages,左侧的列表框中就可以选择只显示你关心的Message了。
祝好运!

OnKeyDown()的确不会走到,但后面这种方法可以走到

我用的是VC6.0