以下のコードをお持ちの場合は、ウィンドウが閉じられた時点を検出して終了できますか? r
値を得ることは決してありません
-1
0
、私は現在のウィンドウだけでなくスレッド全体のメッセージを処理する必要があります。Win32メッセージループ:GetMessage(&msg、NULL、0、0)でウィンドウを閉じると終了しますか?
HWND hWnd = CreateWindowExW(0, L"Edit", L"My Window", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, NULL, NULL, NULL, NULL);
ShowWindow(hWnd, SW_SHOWDEFAULT);
MSG msg;
BOOL r;
while ((r = GetMessageW(&msg, NULL, 0, 0)) != 0)
{
if (r == -1) { break; }
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
申し訳ありませんが、私は完全に 'r == -1'が近い条件ではないことを忘れています。しかし、 'r == 0'で終了することも想定されていませんか?どのようにそれをやっていないのですか? (ところで、私は 'WM_QUIT'は決してループに送られません) – Mehrdad
@Mehrdad:私の答えは、' WM_QUIT'が決してメッセージループに送られないように言いました。 'GetMessage'が' WM_QUIT'を取得した場合は、値0を返します。おそらく問題はあなたが決して* WM_QUITメッセージを送信しないということです。ウィンドウが閉じている場合は、ケースを処理し、['PostQuitMessage'関数](http://msdn.microsoft.com/en-us/library/ms644945.aspx)を使用してループを終了する必要があることを示す必要があります。 –
ああ待って...私はそれを送信する必要がある場合、私は複数のウィンドウを開いている間に、私は最後のウィンドウであるかどうかを知っているので、WndProcから送信する必要がありますか?それはかなり醜いになるの追跡をしないのですか? – Mehrdad