gpt4 book ai didi

c++ - MFC 应用程序终止时运行自定义代码 : d'tor or WM_CLOSE?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:21 26 4
gpt4 key购买 nike

我有一个基于对话框的 MFC 应用程序,它需要停止 Windows Wifi 服务才能正常运行,但我想在我的应用程序退出时再次启用它。

所以我想我应该将重启服务的代码放在主对话框类的析构函数中。

现在我注意到其他人将他们应该在程序终止期间运行的代码放入 WM_CLOSE 消息处理程序中。

这两种方式似乎都有效,但我想知道这两种方式是否有缺点。

最佳答案

对于基于 MFC 对话框的应用程序,您可以将最终代码放置到应用程序类 InitInstance 方法中,紧接在主对话框 DoModal 调用之后。对于其他 MFC 应用程序类型(MDI、SDI),最终代码通常放在 ExitInstance 方法中。

基于对话框的应用程序和 SDI/MDI 应用程序之间的区别在于,基于对话框的应用程序中的 InitInstance 返回 FALSE,然后应用程序退出 - 所有操作都在主对话框 DoModal 调用。

您可能更喜欢对所有应用程序类型使用 ExitInstance,它应该也能正常工作。

编辑。如果您想在对话框类中编写清理代码,WM_DESTROY(Roger Rowland 已经提到)比WM_CLOSE 更好。有时我们可以处理 WM_CLOSE 消息并防止对话框关闭,例如,通过询问“退出程序?是 - 否”。如果您想使用一些子窗口,它们存在于 WM_CLOSEWM_DESTROY 消息处理程序中,而不存在于对话框析构函数中。此外,调用主对话框析构函数时消息队列不存在,因此在这种情况下不应使用 Windows 消息传递。

关于c++ - MFC 应用程序终止时运行自定义代码 : d'tor or WM_CLOSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15903887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com