要獲取窗口關閉的消息,可以使用Windows API中的消息循環和消息處理機制。
首先,需要使用主消息循環函數GetMessage
來獲取消息。然后,在消息處理函數WndProc
中處理窗口關閉的消息。
下面是一個簡單的示例代碼:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CLOSE:
// 在這里處理窗口關閉的消息
MessageBox(NULL, "窗口將要關閉", "提示", MB_OK);
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注冊窗口類
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
wc.lpszClassName = "MyWindowClass";
RegisterClass(&wc);
// 創建窗口
HWND hwnd = CreateWindow("MyWindowClass", "My Window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500,
NULL, NULL, hInstance, NULL);
// 顯示窗口
ShowWindow(hwnd, nCmdShow);
// 消息循環
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在上面的示例代碼中,通過在WndProc
函數中處理WM_CLOSE
消息來獲取窗口關閉的消息。當收到該消息時,會彈出一個提示框,然后銷毀窗口。
注意,這只是一個簡單的示例,實際使用時,可能需要根據具體的需求進行相應的處理。