请教:非模态对话框重复创建的问题

山之鹰   2009-9-22 01:11 楼主
mfc创建了一个主界面,上面由一个按钮A,点击按钮弹出一个非模态对话框B,我要实现的功能是点击主界面,非模态对话框B隐藏,点击按钮A,如果非模态对话框B隐藏,则显示,如果非模态对话框关闭,则重新创建非模态对话框。
    目前我的程序执行是这样的,点击按钮A会重复创建B对话框,网上查找了一下解决办法,都不成。
    我的程序是这样的
创建非模态对话框:
    void CTestDlg::OnBluetooth()
{
    pDlg=new CBLTDlg;
if(pDlg->m_hWnd)
{

            pDlg->Create(IDD_BLUETOOTH,NULL);
            pDlg->ShowWindow(SW_SHOW);
}
pDlg->ShowWindow(SW_SHOW);

}

非模态对话框的关闭
//关闭非模态对话框

void CBLTDlg::OnClose()
{
DestroyWindow();

}

void CBLTDlg::PostNcDestroy()
{
delete this;
CDialog::PostNcDestroy();

//
}

大家看看怎么修改才能成功能

回复评论 (2)

pDlg=new CBLTDlg;


这样,每次点按钮就都产生一个新类,应改为:


if( pDlg == NULL )
{
  pDlg=new CBLTDlg;
}
点赞  2009-9-22 08:17
楼上正解。。

不过这个做法还是不太好。。不建议这么创建非模态对话框!

你可以设一个标志量:bDlgShowFlag = FALSE;
如果对话框存在bDlgShowFlag = TRUE;
if(!DlgShowFlag)
{
  pDlg = new CBLTDlg;
}
点赞  2009-9-22 08:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复