void CMp3::OnBnClickedButton1()
{
CPlayer_list* pdlg2=new CPlayer_list;
if(m_msg1==0)
else
{
pdlg2->DestroyWindow();
m_msg1=1;
}
         {
pdlg2->Create(IDD_DIALOG6,this);
         pdlg2->ShowWindow(SW_SHOW);
m_msg1=0;
}
}
为什么第二次点击按钮时,父对话框闪了一下,子对话却没有关闭?

解决方案 »

  1.   

    if(m_msg1==0)
    else
    {
    pdlg2->DestroyWindow();
    m_msg1=1;
    }
      {
    pdlg2->Create(IDD_DIALOG6,this);
    pdlg2->ShowWindow(SW_SHOW);
    m_msg1=0;
    }
    }
    ========
    这段代码好奇怪啊,是不是应该这样啊:
    if(m_msg1==0)
    {
    pdlg2->DestroyWindow();
    m_msg1=1;
    }
    else
      {
    pdlg2->Create(IDD_DIALOG6,this);
    pdlg2->ShowWindow(SW_SHOW);
    m_msg1=0;
    }
    }
      

  2.   

    第一个if() else{}也太奇怪了吧...LZ是不是写错了?
      

  3.   

    LZ.你不应该每次进到这个函数就new dialog,看看你的代码:CPlayer_list* pdlg2=new CPlayer_list;上面的代码应该在判断了m_msg1为非零的时候才执行吧?
      

  4.   

    void CMp3::OnBnClickedButton1()
    {
    CPlayer_list* pdlg2=new CPlayer_list;
    if(m_msg1==0)
    {
    pdlg2->DestroyWindow();
    m_msg1=1;
    }
    else
    {
    pdlg2->Create(IDD_DIALOG6,this);
    pdlg2->ShowWindow(SW_SHOW);
    m_msg1=0;
    }
    }
    打错了,问题同上
      

  5.   

    你的m_msg1初值是什么啊?另外你的做法是有问题的,CPlayer_list* pdlg2=new CPlayer_list;是一个局部的指针变量,当你点第二次时,它又创建了新的pdlg2,这个指针和你第一次点击时创建的pdlg2并不是同一个指针了。
      

  6.   

    从你的代码上看,你是想点第二次按钮时关闭先前的那个非模态对话框吧。
    如果你要想达到目的,pdlg2这个指针应该设为CMp3类的成员变量,或是设为全局变量,或者设为static变量也可以。