Я заметил, что MSG из winuser.h (который является typedef'd to tagMSG) содержит все параметры из обратного вызова wndproc.Мне было интересно, есть ли какая-то реальная разница в обработке сообщений в wndproc по сравнению с обработкой вне wndproc с помощью MSG, а также с различными вариантами использования между двумя
В основном что-то вроде следующего
LRESULT WinApp::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
DestroyWindow(hwnd);
}
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
против
MSG msg;
if ((PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
switch (msg.message)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
DestroyWindow(hwnd);
}
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}