VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 964|回复: 8

急!非模态对话框的创建,第二次显示出错!!!

[复制链接]

3

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-2-11 16:30:02 | 显示全部楼层 |阅读模式
我在View类中创建一个非模态对话框。刚开始用
CMyDialog* pDlg = new CMyDialog();
然后pDlg->Create(IDD_DIALOG);
pDlg->ShowWindow(SW_SHOW);
完全没问题,一切正常。
可后来老师要求说,不要用这个,在View中定义一个MyDialog的成员变量dlg
然后用dlg显示。
我就dlg.Create和dlg.ShowWindow
可是每次显示一次可以,第二次就弹个错误,显示不了了。
为什么呢?我该怎么办啊??
请高手指点指点。感谢感谢很感谢
回复

使用道具 举报

0

主题

70

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-4-7 16:00:02 | 显示全部楼层
第二次不能在 create 了,因为已经创建过了
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-7 16:45:01 | 显示全部楼层
在该对话框关闭的时候,要自己调用一下销毁dialog的函数.

在每次create关判断一下该变量是否已经与一个dialog关联.
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-4-7 22:00:02 | 显示全部楼层
可以这样:dlg.DoModal()

回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-8 00:30:02 | 显示全部楼层
结束时调用一下
CWnd::DestroyWindow
回复

使用道具 举报

2

主题

19

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-4-20 09:15:01 | 显示全部楼层
第二次不能在 create 了,因为已经创建过了

可以在create时这样写代码
if(!dlg)
   dlg.Create(...)
就不会出错了
回复

使用道具 举报

0

主题

70

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-4-22 20:45:01 | 显示全部楼层
to mystonelh

if(!dlg)
   dlg.Create(...)

你在仔细看看
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-21 18:45:01 | 显示全部楼层
我 支持
CWnd::DestroyWindow



但是 是放在Create之前
回复

使用道具 举报

3

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-8-21 20:45:01 | 显示全部楼层
谢谢各位,解决。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表