我在VC6.0中编辑了个对话框,然后new出来了一个并且通过对话框的资源IDD_DLG_XXX来Create了,但是却不能setWindowText和ShowWindow,运行时出错,ASSERT(GetSafeHwnd())不能通过。何解?

解决方案 »

  1.   

    没有代码那就来猜猜吧.
    我猜你new了个局部变量出来.
      

  2.   

    id = m_ImDlgCtr.GetNextDlgId();
    dlgMag.dlgId = id;
    dlgMag.macAddr = macAddr;
    dlgMag.dlgStatic = 1;
    dlgMag.blNewMsg = false;
    dlgMag.pSendMsgDlg = new IMDlg(this);
    dlgMag.pSendMsgDlg->SetDlgId(id);
    dlgMag.pSendMsgDlg->SetDestUser(us);
    dlgMag.pSendMsgDlg->SetLocUser(this->m_mainMsg.m_localuserinfo);
    dlgMag.pSendMsgDlg->Create(IDD_DLG_SENDMSG);
    ASSERT( dlgMag.pSendMsgDlg->GetSafeHwnd()); 
    dlgMag.pSendMsgDlg->SetWindowText(title);
    m_ImDlgCtr.AddDlg(dlgMag);
    dlgMag.pSendMsgDlg->ShowWindow(SW_SHOW);
    我是在双击list Ctr的函数中实现new出来一个对话框的。
      

  3.   

    CmyDialog *pDlg;
    pDlg = new CmyDialog();
    pDlg->Create(ID, (父窗体)NULL);
    // 如果有父窗体,要在你父窗体创建完成之后才能创建pDlg,否则pWnd就是空的
      

  4.   

    1楼的那种可能性比较当然还有种情况就是IDD_DLG_XXX的值没真正写进StringTable中,或者冲突,Create失败
      

  5.   

    我在new的时候就将pwnd赋值了,就是上面的new IMDlg(this);
      

  6.   

    少调用 AfxInitRichEdit(); 了