我在InitInstance函数中,程序主界面对话框对象创建之后,想创建一个非模态对话框代码如下:CTestDlg dlg;//程序的主界面CDebugDlg dbDlg;
dbDlg.Create(ID_DB,&dbDlg);//执行到这句就会出错dlg.Domodal();
...Create的时候总是Assert出错,请问是为什么?能否从原理上给解释下? 谢谢

解决方案 »

  1.   

    dbDlg还没有创建,就让它做父窗口?
      

  2.   

    CTestDlg dlg;//程序的主界面CDebugDlg dbDlg;
    dbDlg.Create(ID_DB);//
    怎么可以自己作为自己的父窗口呢?况且此时这个窗口还没有创建……
      

  3.   

    不好意思
    ,那句我填错了,应该是dbDlg.Create(ID_DB,&dlg);
    但是即使改成这样,或者父窗口干脆不填,一样会出错,是为什么?
      

  4.   

    调用InitInstance的时候,消息循环应该还没有开始,出错很正常。
      

  5.   

    CTestDlg dlg;//程序的主界面CDebugDlg dbDlg;
    dbDlg.Create(ID_DB,&dbDlg);//执行到这句就会出错dlg.Domodal();
    ...
    几个问题:1: dbDlg.Create(ID_DB,&Dlg); dlg 还没有创建窗口,句柄为NULL,会导致问题2: Create 是无模对话框,要求 初始化 m_pMainwnd, 并且 InitInstance 返回 TRUE;并切程序退出时要DestroyWindow;3:排除以上问题,如果还出现错误,则 dbDlg 类有问题,估计在 构造函数,或DoDataExchange里用了非法的东西