| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 986 人关注过本帖
标题:关于无模式对话框唯一性如何实现
只看楼主 加入收藏
lyd253261362
Rank: 1
等 级:新手上路
帖 子:91
专家分:2
注 册:2007-4-26
结帖率:100%
收藏
 问题点数:0 回复次数:3 
关于无模式对话框唯一性如何实现

对于无模式对话框的唯一性,如何用代码去实现:一个单文档的项目,在菜单中做个子菜单,单击“子菜单”弹出无模式对话框,如何控制,单再次单击“子菜单”是不在显示那个无模式对话框啊!赐教!!!!!!!!!!!
我是这样创建无模式对话框的:给菜单的子菜单,创建一个函数,放在CMainFrame中,在函数中添加如下代码:
CTREEPROPERTYDLG *dlg=new CTREEPROPERTYDLG;
if(dlg->GetSafeHwnd()==0)
{
dlg->Create(IDD_DIALOG_PROPERTY,NULL);

}
dlg->ShowWindow(SW_SHOW);
对于无模式对话框是可以实现,但是,当我再次单击“子菜单”是,又出现一个相同的对话框。如何实现当我再次单击“子菜单”时,不在出现那个对话框啊!!
请高手赐教!!!!

[此贴子已经被作者于2007-5-29 12:29:20编辑过]

搜索更多相关主题的帖子: 唯一性 对话框 模式 
2007-05-28 14:23
lyd253261362
Rank: 1
等 级:新手上路
帖 子:91
专家分:2
注 册:2007-4-26
收藏
得分:0 

本人是采用如下方法解决的:
第一步,在类CMainFrame的.cpp文件中加入bool m_bool=TRUE;//全局变量
这样创建无模式对话框的:给菜单的子菜单,创建一个函数,放在CMainFrame中,在函数中添加如下代码:
CTREEPROPERTYDLG *dlg=new CTREEPROPERTYDLG;
if(m_bool)
{
dlg->Create(IDD_DIALOG_PROPERTY,NULL);
dlg->ShowWindow(SW_SHOW);
m_bool=FALSE;
}
第二步,通过调用全局变量,在把菜单变成可以操作的!
在对话框类 CTREEPROPERTYDLG 的.cpp文件中加入如下代码:
extern bool m_bool;
void CTREEPROPERTYDLG::OnDestroy()
{
CTREEPROPERTYDLG::OnDestroy();
//AfxMessageBox("call delete this");
delete this;
m_bool=TRUE;
}
总结,通过以上代码修改,就可以实现自己的无模式对话框的唯一性的操作!

2007-05-29 12:39
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
也可以吧dlg弄成全局的...

2007-05-29 16:20
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

步骤:
1、在CMainFrame类中加入成员变量CTREEPROPERTYDLG m_menuDlg;
2、在OnCreate里添加如下代码

if(m_hWnd)
{
dlg->Create(IDD_DIALOG_PROPERTY,NULL);
dlg->ShowWindow(SW_HIDE);
}

3、在单击子菜单的相应函数里就可以ShowWindow(SW_SHOW);
这样就可以了吧~!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-05-29 17:51
快速回复:关于无模式对话框唯一性如何实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015583 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved