2

我正在使用 C++/x86 asm 制作 RPG 游戏。我的问题与 C++ 组件有关。在 C++/win32 中,我将如何检测计算机是否正在关闭或关闭,或者其他什么 - 以便我可以保存游戏会话。我的游戏有一个“保存”选项,但如果用户或其他程序决定关闭计算机,我如何使用某种 API 挂钩检测到这一点,以便我可以立即将游戏会话保存到文本文件中。

现在请不要通过创建一个被动运行的线程来建议一个选项,因为我想将文件大小保持在最小,所以如果你能建议某种 WM_ 钩子那就太好了。我会参考 MSDN,但我不想通过他们的 WM 目录搜索几个小时。

4

1 回答 1

6

您可以处理会话保存以响应WM_ENDSESSION消息。请注意,在您的消息处理程序从处理此事件返回后,您的进程可能随时终止,因此您需要在消息处理程序期间直接保存它,而不仅仅是设置一个标志让稍后的代码处理保存,因为稍后代码可能无法执行。

一条评论暗示了这条WM_QUERYENDSESSION信息。这有一个稍微不同的含义:它让应用程序有机会抱怨会话结束,并让用户有机会不注销/关闭系统。根据您的问题,您无意阻止任何此类事情,因此WM_ENDSESSION对我来说似乎更合适。

于 2014-07-20T21:47:23.680 回答