You can do :
while (TRUE)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
OutputDebugStringW(L"Test\n");
}
(and add in WindowProcedure :
switch (msg) {
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
)