VC中,使用dlg.DoModal()打开一个窗口,除了使用IDOK或者IDCANCEL可以关闭当前窗口外,如何关闭当前窗口 5

假如,我在主窗体上做三个按钮,分别打开三个新的窗体,但是我想打开新窗体的时候要关闭当前窗体,不然使用dlg.DoModal()可以重复打开同一个窗体,哪位大哥可以具体点给... 假如,我在主窗体上做三个按钮,分别打开三个新的窗体,但是我想打开新窗体的时候要关闭当前窗体,不然使用dlg.DoModal()可以重复打开同一个窗体,哪位大哥可以具体点给我说明下吗,谢谢 展开
 我来答
bhtzu
推荐于2017-12-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4235万
展开全部

你描述的内容相互矛盾。

  1. 如果你的DoModal只在同一个窗口中调用,那么是不可能反复点击打开多个的,这是模态对话框的特征。如果是要求按钮只允许按一次,那么DoModal返回IDOK后Enable函数禁止按钮就可以了。

  2. DoModal存在父子窗口关系,你不可能关闭了父窗口而保留子窗口。因此如果你要“关闭”的是主窗口,那么只能是隐藏,不能使关闭。

  3. 无论OnOK还是OnCancel,最终都是通过EndDialog结束的对话框,这个函数在对话框中随时可以调用。而正确使用时,不是只有两个ID的按钮才可以结束对话框,任何自定义按钮中调用基类的CDialog::OnOK();这个语句,都可以结束对话框并将DoModal返回IDOK消息。

追问
你好,我是菜鸟,还没入门,domodal不是直接调出一个独立的窗体吗,还是我用错了

我的目的是三个窗口切换,我的确不是在同一个窗口中调用的,我的目的是想要调出任意一个窗口的时候能关掉或者隐藏掉其他窗口,也就是说,任何时候只想保留一个窗口

我目前还不理解OnOK跟OnCancel的这两个函数的作用,不知道哪里可以查到这些函数的作用
追答
DoModal肯定是弹出新的对话框,但弹出后其它对话框和窗口不可点击。
“任何时候只想保留一个窗口”,要做很多自定义代码才能实现,这不是VC/MFC的标准模式,不过有一个可以参考,就是属性页的Wizard向导模式。

任何一本VC书籍都有模态对话框的讲解,MSDN也有非常详尽的说明。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式