我希望程式能在關閉前,先執行我要完成的內容
我嘗試用GetMessage获取關閉消息 ,但是無法成功获取
MSG msg;
while (1) {
GetMessage(&msg, hwnd, 0, 0);
if (msg.message == WM_CLOSE) {
/*执行关闭前的处理*/
}
}
一种可以继续用easyX消息函数以及处理WM_CLOSE的方法,本人测试是可行的,但不确定原理为何:
WNDPROC g_OriginWndProc = NULL;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_CLOSE) {
exit(0);
}
else {
LRESULT result = CallWindowProc((WNDPROC)g_OriginWndProc, hwnd, uMsg, wParam, lParam);
return result;
}
}
int main() {
HWND hwnd = initgraph(1296, 960);
g_OriginWndProc = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_WNDPROC);
SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)WindowProc);
}