PostQuitMessage

PostQuitMessageは、アプリケーションの終了要求(WM_QUIT)ウィンドウメッセージを送出するWindowsAPI・・・。

PostQuitMessage 関数

これまでは、メッセージループ中でHTCLOSEを拾ったりしていたが、これは正しくない・・・。
PostQuitMessageを使って、正しいウィンドウアプリケーションの終了方法を実装する・・・。(ようやくだ・・・。)

WindowProcで、

ウィンドウが破棄されたとき(WM_DESTROYが来たとき)に、PostQuitMessageを送信する・・・。
引数にはこのアプリが終了するときの終了コードを指定する・・・。まあ、0でいい・・・。

で、これまでは無限ループだったメッセージループを、

GetMessageの戻り値を見て、判定する・・・。
PostQuitMessageによってWM_QUITが送信され、GetMessageはそれを受け取ると0を返す・・・。
すると、whileの条件は偽になるのでメッセージループから抜ける・・・。
ちなみにエラーで-1を返す場合もあるので、'>'にすべき・・・。

一応、msg.wParamに終了コードが入ってるので、

と返してあげる・・・。

実行してみると、

f:id:BG1:20150310105407p:plain

と表示されて、閉じるボタンでちゃんと閉じられる、でアプリがちゃんと終了する・・・。

Sample/PostQuitMessage.cpp at master · bg1bgst333/Sample · GitHub