2014-07-20 77 views
2

我正在用C++/x86 asm製作RPG遊戲。我的問題與C++組件有關。在C++/win32中,我將如何檢測計算機是關閉還是關閉,或者其他什麼 - 以便我可以保存遊戲會話。我的遊戲有一個「保存」選項,但如果用戶或其他程序決定關閉計算機,那麼我怎樣才能使用某種API鉤子檢測到這一點,以便我可以立即將遊戲會話保存到文本文件。如何檢測計算機是否正在關閉以保存會話

現在請不要建議一個選項,通過創建一個線程來被動地運行,因爲我想保持文件大小爲最小,所以如果你可以建議某種類型的WM_鉤子會很好。我會參考MSDN,但我不想通過他們的WM目錄搜索小時。

+5

'WM_QUERYENDSESSION'。 –

+0

@ DanielA.White對於想要完成工作的人來說,這應該夠了 – Alireza

+0

有趣的功能。我不知道任何這樣做的遊戲。 –

回答

6

您可以處理會話保存以響應WM_ENDSESSION消息。請注意,在您的消息處理程序從處理此消息返回後,您的進程可能隨時終止,因此您需要在消息處理程序期間直接保存它,而不是僅設置一個標誌以讓稍後的代碼處理保存,因爲稍後代碼可能無法執行。

評論建議WM_QUERYENDSESSION消息。這有一個稍微不同的含義:它使應用程序有機會抱怨會話結束,並給用戶一個機會不註銷/關閉系統。根據你的問題,你不打算阻止任何這樣的事情,所以WM_ENDSESSION似乎是一個更好的匹配我。

+2

在'WM_QUERYENDSESSION'準備文件內容可能是明智的,因爲關機應該是一個快速的過程。 – MSalters