windows关于非模态框的释放

  非模态对话框是通过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;

(如有疏漏,欢迎指正)

 

    

转载于:https://www.cnblogs.com/zhqshome/p/3583932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值