Я думаю, что самый простой способ - время от времени вызывать PeekMessage .
BOOL IsCloseEventReceived()
{
MSG msg;
return PeekMessage(&msg, NULL, WM_CLOSE, WM_CLOSE, PM_NOREMOVE);
}
Эта функция должна работать, чтобы проверить, было ли отправлено сообщение WM_CLOSE.Это не блокировка, и вам нужно будет звонить на регулярной основе.
Я могу ошибаться, но я думаю, что вам не нужно скрытое окно для обработки сообщений, очередь сообщений присоединяется к вашему процессу при первом вызове функции, связанной с сообщениями, такой как PeekMessage.Однако, если вы получите сообщение WM_CLOSE до вашего первого вызова этой функции, оно может быть потеряно.