请问:这样建立与关闭非模态对话框可以吗

leetow2003 2012-04-10 08:43:29
我在单文档中建立一个非模态对话框,
请看:
我先在视图类中定义了对话框的对象指针,
CDlgCmd *pDlg;
然后在菜单中创建它,
void CRc2View::OnCommand()
{
// TODO: Add your command handler code here
pDlg=new CDlgCmd;
pDlg->Create(IDD_DIALOG2,this);
pDlg->ShowWindow(SW_SHOW);
}

然后在对话框的Cancel消息中销毁它,
void CDlgCmd::OnCancel()
{
// TODO: Add extra cleanup here
DestroyWindow();
}
最后在视图类的析构函数中删除对话框指针,
CRc2View::~CRc2View()
{
delete pDlg;
}
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2003 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 2 楼 的回复:
可是我看资料,有的说还要改写对话框的PostNcDestroy()函数,不知道为什么?
一般都是在PostNcDestroy函数中自己释放this指针
这样做就不用显式的释放对象了
这样做的好处是使用起来比较方便
当然如果你可以自己很好的管理对象指针倒也没什么问题
[/Quote]
我有个疑问,你说在PostNcDestroy函数中自己释放this指针,就是说可以自己释放自己的指针,
难道不会在PostNcDestroy函数还没结束时,对象本身都已经不存在了,这难道不会出错吗?
向立天 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
可是我看资料,有的说还要改写对话框的PostNcDestroy()函数,不知道为什么?
[/Quote]一般都是在PostNcDestroy函数中自己释放this指针
这样做就不用显式的释放对象了
这样做的好处是使用起来比较方便
当然如果你可以自己很好的管理对象指针倒也没什么问题
bazzi2011 2012-04-11
  • 打赏
  • 举报
回复
leetow2003 2012-04-11
  • 打赏
  • 举报
回复
如果多次调用菜单(也就是多次创建了非模态对话框),那么应该在在PostNcDestroy里删除指针,是吗?
向立天 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
引用 2 楼 的回复:
可是我看资料,有的说还要改写对话框的PostNcDestroy()函数,不知道为什么?
一般都是在PostNcDestroy函数中自己释放this指针
这样做就不用显式的释放对象了
这样做的好处是使用起来比较方便
当然如果你可以自己很好的管理对象指针倒也没什么问题

我有个疑问,你说在PostNcDestroy函数中自己释放thi……
[/Quote]
PostNcDestroy是后一个消息了
所以这才是可行的
leetow2003 2012-04-10
  • 打赏
  • 举报
回复
那我在视图类的析构函数中删除对话框指针也可以吧
  • 打赏
  • 举报
回复
一般销毁时在PostNcDestroy中 delete this
leetow2003 2012-04-10
  • 打赏
  • 举报
回复
可是我看资料,有的说还要改写对话框的PostNcDestroy()函数,不知道为什么?
wltg2001 2012-04-10
  • 打赏
  • 举报
回复
应该没什么问题。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧