через Alt-F4, или угловую кнопку "X", или отправив destroywindow (hwnd) самостоятельно
Вы не можете опубликовать DestroyWindow (). Убедитесь, что процедура окна вашего главного окна похожа на это:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
// Other cases
//...
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Вызов функции PostQuitMessage () гарантирует, что ваш цикл сообщений завершается, GetMessage () возвращает FALSE, когда получает сообщение WM_QUIT. Это заставляет ваше главное окно вести себя как главное окно, закрытие его завершает процесс. У вас могут быть другие окна верхнего уровня, которые не имеют, у них не должно быть этого обработчика сообщений WM_DESTROY. DestroyWindow () уже вызывается автоматически DefWindowProc () при обработке сообщения WM_CLOSE.