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

解决方案 »

  1.   

    你这个是别人的代码吧,你要改一下,别人的代码中有他自己的类名之类的东西和你的代码肯定不同。CTestDlg 指的是什么?
    ===========
    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就行了。
      

  2.   

    楼主还是很不了解MFC编程呢,但有些问题都是C++的基础问题。
    不知道CTestDlg是什么,但至少也知道它是个类,BOOL PreTranslateMessage(MSG* pMsg) 是它的一个成员函数。在这个函数中检测是否是按键按下,并且是否按下了回车键。如果是,则转移焦点。
      

  3.   

    楼主,你要重载你自己对话框类的PreTranslateMessage函数,不是单纯拷贝别人的代码
      

  4.   

    那是对话框工程类的名字。。LZ建的工程是什么就是XXDlg