VC++6.0编辑的对话框怎样修改右上角的叉的响应函数?

我想在对话框退出的时候做一些处理,请问这些处理应该加在哪里?... 我想在对话框退出的时候做一些处理,请问这些处理应该加在哪里? 展开
 我来答
conanwj1980
2008-07-22 · TA获得超过438个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:79.9万
展开全部
关于楼主提问的“对话框怎样修改右上角的叉的响应函数”就是WM_CLOSE消息的处理函数OnClose(),fanskydream已经回答的很详细了,在此不再赘述。
我要补充的是,对话框关闭有很多途径,仅仅处理WM_CLOSE消息还是不够的。
本人就曾犯过这种错误,在对话框类中new了几个变量,在OnClose中弹出关闭确认的对话框并进行delete。当用户不点击这个“叉”关闭而直接用组合键“Alt+F4”关闭时,问题就来了:
首先是没有了关闭确认的对话框,再次就是没有delete那几个在堆上分配的变量造成内存泄漏。

因此,建议楼主重载对话框类的OnDestroy()函数。在这个函数里面进行是否关闭的确认,如果用户选择不关闭对话框,就直接返回该函数不调用父类的OnDestroy()即可。
而对话框对象内部动态生成的变量析构在放在PostNcDestroy()函数中进行。
风轻云度
2008-07-22 · TA获得超过1423个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:0
展开全部
重载CDialog的OnClose(WM_CLOSE消息),在这个函数里处理就可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanskydream
2008-07-22 · 超过25用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:95.2万
展开全部
为你的对话框添加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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百态森林
2008-07-22
知道答主
回答量:35
采纳率:0%
帮助的人:3万
展开全部
直接在回调函数中写就可以了。
LRESULT CallWindowProc(
WNDPROC lpPrevWndFunc, // pointer to previous procedure
HWND hWnd, // handle to window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(Msg)
case WM_CLOSE:
//语句块
return 0;
}
这样子就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式