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();
//
}
大家看看怎么修改才能成功能
pDlg=new CBLTDlg;
这样,每次点按钮就都产生一个新类,应改为:
if( pDlg == NULL )
{
pDlg=new CBLTDlg;
}
楼上正解。。
不过这个做法还是不太好。。不建议这么创建非模态对话框!
你可以设一个标志量:bDlgShowFlag = FALSE;
如果对话框存在bDlgShowFlag = TRUE;
if(!DlgShowFlag)
{
pDlg = new CBLTDlg;
}