BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg-> message==WM_KEYDOWN&&pMsg-> wParam==VK_RETURN)
{
NextDlgCtrl();
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}搜论坛得到得代码有几处不明之处,还请大大们指点一下。
CTestDlg 指的是什么?
PreTranslateMessage 是在什么头文件之后? <stdio.h> 吗?
调试代码返回错误CTestDlg' : is not a class or namespace name
NextDlgCtrl' : undeclared identifier
CDialog::PreTranslateMessage' : illegal call of non-static member function
{
if(pMsg-> message==WM_KEYDOWN&&pMsg-> wParam==VK_RETURN)
{
NextDlgCtrl();
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}搜论坛得到得代码有几处不明之处,还请大大们指点一下。
CTestDlg 指的是什么?
PreTranslateMessage 是在什么头文件之后? <stdio.h> 吗?
调试代码返回错误CTestDlg' : is not a class or namespace name
NextDlgCtrl' : undeclared identifier
CDialog::PreTranslateMessage' : illegal call of non-static member function
===========
CTestDlg应该是它的对话框类的类名,对于你的代码来说,你要改成你的对话框类的类名。PreTranslateMessage 是在什么头文件之后? <stdio.h> 吗?
================
PreTranslateMessage是CWnd的一个虚函数,你不用考虑任何头文件的问题。调试代码返回错误CTestDlg' : is not a class or namespace name
NextDlgCtrl' : undeclared identifier
CDialog::PreTranslateMessage' : illegal call of non-static member function
==============
这个就不解释了,这些是人家代码里的东西,你原封不动的抄过来当然不行了。再说一下PreTranslateMessage的原理,这个虚函数实际上是消息预处理,当有消息传给对话框时,由这个函数先来处理,所以当你按回车键时,由这个函数先来处理WM_KEYDOWN消息,
if(pMsg-> message==WM_KEYDOWN&&pMsg-> wParam==VK_RETURN) 这句也就是判断当前的消息是不是WM_KEYDOWN,且按的是不是回车键。NextDlgCtrl(); 是别人自己写的一个函数,你可以不用管它的,直接return TRUE就行了。
不知道CTestDlg是什么,但至少也知道它是个类,BOOL PreTranslateMessage(MSG* pMsg) 是它的一个成员函数。在这个函数中检测是否是按键按下,并且是否按下了回车键。如果是,则转移焦点。