MFC 如何判别非模态对话框已创建 ,如何防止生成同样的对话框?

 我来答
yemo31995556
推荐于2017-09-12 · TA获得超过335个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:241万
展开全部
全局变量 CXXDlg *g_pdlg
初始赋值为null,如果对话框打开给g_pdlg赋值,在打开对话框之前判断g_pdlg是否为null就行了,不为null就不再打开,关闭对话框的时候给g_pdlg赋值为空
更多追问追答
追问
我定义了一个Bool  g_pdlg;   CMyDlg* myWnd ;
利用判断:if(!g_pdlg){myWnd=new CMyDlg; myWnd->Create(); myWnd->ShowWindow(SW_SHOW); g_pdlg = ture;}
else{if(myWnd!=Null ){myWnd->Destroywindow(); delete myWnd; myWnd=Null; g_pdlg=False;}
}
还是有问题,连续点击两次按钮,还是出现两个对话框。

你说的g_pdlg 怎么赋值?赋什么值
追答
你这里别用g_pdlg了,你定义了CMyDlg* myWnd  已经有一个非模态对话框的指针了,你就判断这个指针是否为空就是了,myWnd给它赋个初值null
手机用户36155
2011-03-05 · TA获得超过107个赞
知道答主
回答量:156
采纳率:0%
帮助的人:120万
展开全部
; cpp/h/资源文件都定义好了。
CDlg* pOneDlgObj = new CDlg;
if ( pOneDlgObj)
{
BOOL ret = pOneDlgObj->Create(IDD_MYDIALOG,this);
}
pOneDlgObj->ShowWindow(SW_SHOW);

这样就行了,IDD_MYDIALOG为你的对话框资源ID;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
starfar1983
2011-03-01 · TA获得超过2258个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1038万
展开全部
只允许一个对话框对象对吧?典型的Singleton模式嘛,看下这个文章就明白了:http://www.pconline.com.cn/pcedu/empolder/gj/c/0407/421424.html
更多追问追答
追问
我是利用控件生成一个非模态对话框,但是当再次点击时又生成一个,。我要的结果是当再次点击时还原为上次已经出现的那个对话框,有实例吗?
追答
你的问题太含糊了,没法回答。至少给出伪代码说清楚有哪些接口哪些步骤,别人才能告诉你怎么做啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hard_aport_
2017-09-08
知道答主
回答量:4
采纳率:0%
帮助的人:3861
展开全部
你把对话框定义成类的成员变量,创建对话框然后显示隐藏就可以了,每次都是同一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0o0pp
2011-03-02 · TA获得超过128个赞
知道小有建树答主
回答量:220
采纳率:100%
帮助的人:62.5万
展开全部
Mutex吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式