如标题;
具体描述如下:现在有一个主对话框,里面有个Picture框架用来显示。上面有几个不同的按键,按下不同的按键,在Picture区域内显示不同的内容。不同的内容做成了子对话框。现在按下不同的按键可以显示不同的内容,但是多次按下相同的按键就会把同一个对话框显示好多个重叠在一起。比如说按下按钮1就显示对话框1,但是连续按下按钮1多少次,在Picture区域内就有多少个对话框1重叠再一起
我MFC刚入门没多久,请问下这个问题如何解决啊~~~~
是不是按下另一个按键的时候就销毁之前显示的那个,而不是隐藏。按同一个按键时候进行检测,如果有显示了就不跟新了?具体怎么做,希望高手指点下按键响应函数如下:void CButtonTryDlg::OnButton1() 
{
// TODO: Add your control notification handler code here CDlg1 *p=new CDlg1(this);
p->Create(IDD_DIALOG1);
p->SetParent(this);//设置dialog1为父窗口 p->ShowWindow(SW_SHOW);
CRect rc;
GetDlgItem(IDC_POSITION)->GetWindowRect(rc); //获取Picture的区间
ScreenToClient(&rc);

p->MoveWindow(rc);
}

解决方案 »

  1.   


    如果我在初始化中全部创建了子对话框,只是在按钮的响应里将其设置为显示或隐藏。。
    这样隐藏的函数是不是还会响应。比如初始化中显示区域里面已经产生了子对话框1和子对话框2.并且都进行了隐藏。我按下按钮1,显示子对话框1.此时如果按回车或ESC这个时候隐藏的对话框2是不是不响应,还是也会响应,只是看不见而已
      

  2.   

    这一个CDlg1 *p=new CDlg1(this);
    对话框类指针放类里面声明成类成员 CDlg1* m_p;
    然后在构造函数里面立马设置成 m_p = NULL;使之为空
    按键以后
    if(m_p == NULL)
    {
    m_p = new CDlg;
    }
    ...
    销毁的时候delete m_p;以后,也立马 m_p = NULL;
      

  3.   

    这个你可以试一下就知道隐藏的对话框是不是会响应了如果会响应 也很好办,在每个对话框中加个变量BOOL m_bHide; 然后截获你想要的鼠标或键盘操作,如果m_bHide == TRUE 则直接返回,否则处理相应的消息。