为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下关于VC++6.0编辑的对话框怎样修改右上角的叉的响应函数?

请问一下关于VC++6.0编辑的对话框怎样修改右上角的叉的响应函数?

守候你守候我 2021-10-21 19:15:59
我想在对话框退出的时候做一些处理,请问这些处理应该加在哪里?求高手指点!
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

关于提问的“对话框怎样修改右上角的叉的响应函数”就是WM_CLOSE消息的处理函数OnClose(),fanskydream已经回答的很详细了,在此不再赘述。
我要补充的是,对话框关闭有很多途径,仅仅处理WM_CLOSE消息还是不够的。
本人就曾犯过这种错误,在对话框类中new了几个变量,在OnClose中弹出关闭确认的对话框并进行delete。当用户不点击这个“叉”关闭而直接用组合键“Alt+F4”关闭时,问题就来了:
首先是没有了关闭确认的对话框,再次就是没有delete那几个在堆上分配的变量造成内存泄漏。

因此,建议楼主重载对话框类的OnDestroy()函数。在这个函数里面进行是否关闭的确认,如果用户选择不关闭对话框,就直接返回该函数不调用父类的OnDestroy()即可。
而对话框对象内部动态生成的变量析构在放在PostNcDestroy()函数中进行。

查看完整回答
反对 回复 2021-10-24
?
烙印99

TA贡献1829条经验 获得超13个赞

为你的对话框添加WM_CLOSE的消息处理函数
加了这个函数, 在退出前 会进到这个函数里的,你想做什么都可以在这个函数中做。

也可以手动添加:(如果楼主知道消息响应函数怎么加的话就没有问题了。)
1。头文件
afx_msg void OnClose();

2.

BEGIN_MESSAGE_MAP(CBaiduDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_CLOSE()///这个地方一定要写
END_MESSAGE_MAP()

3.
void CBaiduDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default

CDialog::OnClose();
}



查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信