在基于对话框的MFC程序中,我需要在自定义的类中向对话框类的CEdit控件写入数据。但是在自定义类中调用对话框类的读写控件函数就出错。但是该函数却在对话框内部调用成功。调试跟踪的结果发现在自定义类调用时执行到UpdateData()函数或者是GetWindowText()函数时就出错。哪位能告诉我为什么以及如何解决?

解决方案 »

  1.   

    UpdateData()和GetWindowText()是谁调用,如果不是用对话框类的对象:
    对话框对象->UpdateData()
    对话框对象->GetWindowText()而是用this那是不行的:)
      

  2.   

    定义类调用 UpdateData / GetWindowText 时 CEdit 实例是否存在?
      

  3.   

    在自定义类里面已经声明了对话框类的对象,是使用对话框类的对象调用的GetWindowText()。
    我跟踪的结果也可以正常调用是成功的,只是跟踪到GetWindowText()的内部时,遇到第一个ASSERT(hwnd);的时候出错。
      

  4.   

    回复tigerfox:我现在就在检查着呢。各位大侠帮帮忙
      

  5.   

    很可能是调用UpdateData()和GetWindowText()的对象不是用对话框类:
    对话框对象->UpdateData()
    对话框对象->GetWindowText();试试:  ((CDialog*)AfxGetMainWnd())->UpdateData();
           ((CDialog*)AfxGetMainWnd())->GetWindowsText();
      

  6.   

    我重新说明一下吧。我在对话框类里面声明了一个函数:
    void CMyPingDlg::Display(CString s)
    {
    CString str;
    m_Display.GetWindowText(str);
    str += s ;
    m_Display.SetWindowText(str);
    }
    当我在我自定义的类里面调用的时候,执行到GetWindowText()函数的时候就出错了。