原來的問題:
我不能不管我的窗口過程函數創建能夠檢測WM_CLOSE
消息,並呼籲PostQuitMessage
並讓Windows後立即關閉窗口繼續使用DefWindowProc
處理窗口消息。窗口在Win32應用程序將無法正常關閉
但是,通過拖動標題欄移動窗口後,它似乎能夠正常關閉。
爲我的窗口過程函數的代碼如下:
LRESULT CALLBACK OnEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_QUIT:
{
printf("WM_QUIT\n");
break;
}
case WM_CLOSE:
{
printf("WM_CLOSE\n");
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(handle, message, wParam, lParam);
}
因此,除了發送WM_MOVE
消息給我的窗口或在WM_CLOSE
情況下塊使用exit(0)
,我怎麼能保證我的窗口可以創建後立即關閉?
新問題:
傳遞NULL
到GetMessageW
的hWnd
參數,而不是我的窗口句柄後,窗口關閉現在正確回答,因此我剛纔的問題。
因此,爲什麼GetMessageW
功能以前沒有,唯一的窗口提供手柄檢索WM_QUIT
消息,而不是使用NULL
爲hWnd
參數?
未測試,調用'PostQuitMessage(0);'和不調用'DefWindowProc'用於消息'WM_QUIT'可能不太好。 – MikeCAT
它可能對您有用。 https://msdn.microsoft.com/en-us/library/windows/desktop/ff381396%28v=vs.85%29.aspx並且在'printf(「WM_QUIT \ n」);'之後,沒有'打破;'。可以嗎? –
除非出現嚴重錯誤,否則'WM_QUIT'將永遠不會傳遞到您的WndProc。 –