小弟是初学者,望大家说的能详细些...感谢!用MFC向导创建对话框.
好像MFC默认是创建的模态对话框,不知道能不能改成非模态的?1.用MFC创建对话框后,我是在...App类的Initlnstance()里
注释了int nResponse = dlg.DoModal();并添加
CTextingDlg *m_textingdlg = new CTextingDlg;
m_textingdlg->Create(IDD_TEXTING_DIALOG);
m_textingdlg->ShowWindow(SW_SHOW);
结果是对话框闪了下就没了.那么应该在什么地方加入创建代码?都有些什么方法?2.创建模态对话框A,用A调用模态话框或非模态对话框B同时关掉A方法是什么?如何实现?

解决方案 »

  1.   

    CTextingDlg   *m_textingdlg   =   new   CTextingDlg;
    把它定义为成员变量,闪一下是因为生存期结束了。
    2.创建模态对话框A,用A调用模态话框或非模态对话框B同时关掉A方法是什么?如何实现? 
    就是当关闭A时(重载OnCancel或是OnOK,取决于你想在何时关掉A),定义一个B的变量,然后.DoModal()就可以了,这就是模式调用。
      

  2.   

    DoModal()新对话框的时候Onconcel()旧的就可以了-----ls的
    分也没什么用吧..!
    这不是可用分.
      

  3.   

    感谢回复,以后我会给分的,不知道这分是怎么来的- - 呵呵...但问题依旧,我是用MFC向导生成的对话框程序...1.我把CTextingDlg *m_textingdlg = new CTextingDlg;
    直接放在了类private下面...暴错2.我类声明成员变量CTexting *m_textingdlg;
    在类...App成员函数Initlnstance()里
    m_textingdlg = new CTextingDlg;
    m_textingdlg-> Create(IDD_TEXTING_DIALOG); 
    m_textingdlg-> ShowWindow(SW_SHOW); 
    还是闪了下就没了.不知道我什么地方错了...
      

  4.   

    对于
    2.模态对话框A再调用模态对话框B同时关闭A又如何实现呢?听说用线程能解决,呵呵,我还没看到那。还有别的方法吗?
      

  5.   

    我把CTextingDlg   *m_textingdlg   =   new   CTextingDlg; 
    直接放在了类private下面...暴错上面的语句是赋值了,在类的头文件中,只能定义,不能赋值。
    CTextingDlg   *m_textingdlg;2.模态对话框A再调用模态对话框B同时关闭A又如何实现呢? 听说用线程能解决,呵呵,我还没看到那。还有别的方法吗?
    -----
    假如,A上有个Button1,点击时,A关闭,B调出来。
    那么,当点击Button1时:
    CDialog::OnCancel()
    B.DoModal()就可以了。
      

  6.   

    我有个问题  LZ创建对话框的时候是NEW出来的  没有显示调用DELETE  这个对话框对象生命周期应该和程序一样  为什么会闪一下没了? 是不是create的时候没设置父窗口的原因? 
      

  7.   

    我不明白为什么用CDialog::OnCancel() 
    销毁了对话框之后再用B.DoModal()竟然能在作用域外成都创建,运行对话框B...最后在MSDN中找到
    EndDialog does not close the dialog box immediately. Instead, it sets a flag that directs the dialog box to close as soon as the current message handler returns.再此感谢hua2136