2892|2

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教:非模态对话框重复创建的问题 [复制链接]

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();

//
}

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

最新回复

楼上正解。。 不过这个做法还是不太好。。不建议这么创建非模态对话框! 你可以设一个标志量:bDlgShowFlag = FALSE; 如果对话框存在bDlgShowFlag = TRUE; if(!DlgShowFlag) {   pDlg = new CBLTDlg; }  详情 回复 发表于 2009-9-22 08:35
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
pDlg=new CBLTDlg;


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


if( pDlg == NULL )
{
  pDlg=new CBLTDlg;
}
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上正解。。

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

你可以设一个标志量:bDlgShowFlag = FALSE;
如果对话框存在bDlgShowFlag = TRUE;
if(!DlgShowFlag)
{
  pDlg = new CBLTDlg;
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表