首页 > Windows开发 > 详细

windows关于非模态框的释放

时间:2014-03-06 22:26:27      阅读:1052      评论:0      收藏:0      [点我收藏+]

  非模态对话框是通过new创建的对话框,语法类似于

     Dialog* dialog = new Dialog(parameter);

 这样创建的对话框时在堆上生成的,释放时要用delete

 非模态对话框默认的OnClose只是把对话框隐藏了,并没有关闭。

如果仅仅是Delete指针的话会有内存泄露,因为对话框的资源没有释放。

     如果在对话框内释放的话要重写两个消息响应函数

     OnClose()和 PostNcDestory() 

     添加WM_ON_CLOSE()和 WM_ON_NCDESTORY()分别响应

    WM_CLOSE 和 WM_NCDESTORY消息。

    OnClose()

{

       CDialg::OnClose();

       DestoryWindow();

}

 

PostNcDestory()

{

    CDialg::PostNcDestory();

    delete this;

}

 

执行顺序,先执行OnClose()再执行 PostNcDestory()

如果在对话框外释放,就先调用DestoryWindow(),再delete该指针 。

示例   dialog->DestoryWindow();

         delete dialog;

          dialog = NULL;

(如有疏漏,欢迎指正)

 

    

windows关于非模态框的释放,布布扣,bubuko.com

windows关于非模态框的释放

原文:http://www.cnblogs.com/zhqshome/p/3583932.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!