void CMainFrame::OnStatic() 
{
Notify *notice=new Notify;
(notice->GetDlgItem(IDC_MyStatic))->SetWindowText("Message");  //此处报错
notice->DoModal();
}注:
我建的是一个单文档应用程序,在菜单栏点击一个按钮,调用OnStatic()函数
Notify为一个对话框类,对话框中放了一个CStatic控件用来显示信息,其ID为IDC_MyStatic
报错如下:
File:   winocc.cpp 
Line:76 
For   information   on   how   your   program   can   cause   an   assertion 
failure,see   the   Visual   C++   documentation   on   asserts.

请问是什么原因???

解决方案 »

  1.   

    Notify *notice=new Notify;
    你这刚创建 还没显示对话框,这个控件当然不能用
      

  2.   

        Notify *notice=new Notify;
        notice->DoModal();
        (notice->GetDlgItem(IDC_MyStatic))->SetWindowText("Message");  //此处报错第2句和第3句换位置
        
      

  3.   

    第二句与第三句换了以后,也改为_T("Message");
    对话框上显示的信息就不是想要显示的”Message“了,并且调用还会出错!大哥可以试一下!
      

  4.   

    DoModal()以后对话框销毁了,所以你后面和窗口相关的操作就非法
    把你的GetDlgItem(IDC_MyStatic)->SetWindowText("Message"); 这个放到Notify类的OnInitDialog()函数中去。
      

  5.   

    既然Notify是一个对话框类,
    就作一个构造函数,
    把上面的控作初始化完,再显示呀。
      

  6.   


    CNotify::CNotify(CString msg, //要传的参数
     CWnd* pParent /*=NULL*/)
    : CDialog(CNotify::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CNotify)
    m_msg = msg;
    //}}AFX_DATA_INIT
    }
    //-----------------------------
    CNotify *notify = new CNotify("bbbbbbb");
    notify->DoModal();