Win32 App Closing the Window - yoshimune/LearningDirectX11 GitHub Wiki
This page refers to 【[Closing the Window](https://docs.microsoft.com/ja-jp/windows/desktop/learnwin32/closing-the-window】
ユーザーがウィンドウを閉じるとき、アクションは一連のウィンドウメッセージをトリガーします。
ユーザーは「閉じるボタン」をクリックするか、キーボードのALT+F4を押すことにより、ウィンドウを閉じることができます。これらのアクションのうちいずれかが、ウインドウはWM_CLOSEメッセージを受信させます。WM_CLOSEメッセージは、ウィンドウが閉じる前にユーザーに促す機会を提供します。もし本当にウィンドウを閉じたい場合は、DestroyWindow関数を呼び出します。それ以外の場合、WM_CLOSEメッセージへ単純に0を返した場合、OSはメッセージとウィンドウの破棄命令を無視します。
以下は、VM_CLOSEを扱う例です。
case WM_CLOSE:
if (MessageBox(hwnd, L"Really quit?", L"My application", MB_OKCANCEL) == IDOK)
{
DestroyWindow(hwnd);
}
// Else: User canceled. Do nothing.
return 0;
もし何もせずにウィンドウを閉じたい場合は、単純にDestroyWindowを呼べばよいです。しかし、このケースは短縮する場合があります。DefWindowProcはデフォルトのアクションを実行することを思い出してください。この例のWM_CLOSEは、DefWindowProcが自動的にDestroyWindowを呼び出します。
ウィンドウが破棄されるとき、WM_DESTROYメッセージを受け取ります。このメッセージはウィンドウがスクリーンから除去されたあとに送信されます。しかし、デストラクタが実行される前(特に、子ウィンドウが破棄される前)です。
メインアプリケーションでは、通常、PostQuitMessageを呼び出すことによってW<_DESTROYに応答します。
case WM_DESTROY:
PostQuitMessage(0);
return 0;