我新建了一个对话框程序,在一个按钮的点击事件中,显示一个模态对话框
这个对话框是资源中有的,我包含了它的头文件然后写:CMyDialog* Test;
        Test=new CMyDialog;
        Test->DoModal();
        Test->SetWindowText("faf");
加最后一句话就出错,不加的话就没有错误,这是为什么,这两个方法有什么区别吗?

解决方案 »

  1.   

    CMyDialog* Test;
      Test=new CMyDialog;
      Test->SetWindowText("faf");
      Test->DoModal();再试试
      

  2.   

    不能这样做。SetWindowText函数是通过向窗口发消息实现的,模态对话框运行时窗口才存在,作为一个线程,主程序在等待对话框,结束后才继续运行。所以发不成消息。错误的做法。
      

  3.   

    u can try the API function:BOOL SetWindowText(
      HWND hWnd,         // handle to window or control
      LPCTSTR lpString   // address of string
    );
      

  4.   

    SetWindowText(text.GetSaftHwnd(),"faf")试试
      

  5.   


    CMyDialog* Test;
    Test=new CMyDialog;
    Test->DoModal();
    Test->SetWindowText("faf");_____________
    替换为->
    CMyDialog* Test;
    Test = new CMyDialog;
    Test->Create(Test->IDD,this);
    Test->SetWindowText("faf");
    Test->ShowWindow(SW_SHOW);这样创建的是非模式对话框。如果你要用DOMODAL()创建模式对话框,应该在
    CMYDIALOG类的ONINITDIALOG函数里面SETWINDOWTEXT(),最后,NEW出来的
    对话框记得要DELETE。
      

  6.   

    使用DOMODAL()创建模式对话框;不能在创建模式对话框后
    Test->SetWindowText("faf");
    只能在OnInitDialgo() SETWINDOWTEXT("faf");
    如果使用Create()创建非模式对话框,则偏离你原来的设想