我在vc6。0中编写了一个类比如:
class test
{char szText[256];
public:
void print()
{GetDlgItemText(NULL,IDC_EDIT1,szText,256);
MessageBox(NULL,szText,"ok",MB_OK);
}
但是我发现在类中GetDlgItemText,MessageBox声明和类外面的普通函数会不一样。而且EDIT1的成员变量在这儿不起作用,出现没有声明的错误。但是在类外去正常。还有GetDlgItemText似乎在类里面不起作用,我输入一个值,但是MessageBox显示是个乱码。我晕了,怎么回事?

解决方案 »

  1.   

    #include "Resource.h"
    GetDlgItemText(          
        HWND hDlg,
        int nIDDlgItem,
        LPTSTR lpString,
        int nMaxCount
    ); 第一个参数 hDlg 不能为 NULL
      

  2.   

    GetDlgItemText是CWnd还是CDialog的一个成员函数,也有对应的全局函数,如property1描述
    MessageBox也是这样,在你这个类里只能用全局函数的版本。GetDlgItemText(NULL,IDC_EDIT1,szText,256);第一个参数是对话框的句柄,是必须的,不能用NULL代替。
      

  3.   

    void print()
    {
      ::GetDlgItemText(NULL,IDC_EDIT1,szText,256);
      ::MessageBox(NULL,szText,"ok",MB_OK);
    }
      

  4.   

    如果你要在类中添加系统调用函数的话,要在函数前面添加static ,否则编译器不认识,
    要不就声明成全局变量
      

  5.   

    你若想使用api得使用方法作用域符::GetDlgItemText();但此时第一个参数不能为空否则什么也做不了;如果使用CWnd的方法GetDlgItemText(),就得这样写Cwnd::GetDlgItemText,这样就不用管HWND hDlg参数了,因为Cwnd内部将成员变量传入api函数,而该过程对你是透明的.
      

  6.   

    我在自己写的类里面写:cout<<CWuDlg::m_text1为什么不行?