I'm programming a little game, and I set the lpfnWndProc to DefWindowProc and after that, I made a loop in that way:
MSG lastMessage;
while (true)
{
if (PeekMessage(
&lastMessage,
this->getWindow(),
0, 0,
PM_REMOVE))
{
TranslateMessage(&lastMessage);
DispatchMessage(&lastMessage);
}
}
So how do I handle the Close Window event in that case?
First of all, this is not how you write a message loop: it will take 100% CPU while waiting for messages, and won't remove messages for other windows from the queue. It will also never terminate. See here for an example of a message loop.
About closing windows: DefWindowProc
will handle WM_CLOSE
automatically and destroy your window. If you want your application to terminate when the window is closed, you need to handle WM_DESTROY
and call PostQuitMessage(0)
from it. This means you will need your own window procedure instead of DefWindowProc
.