Более традиционный цикл обработки сообщений выглядит следующим образом:
while (GetMessage(&msg, 0, 0, 0))
{
if (!TranslateAccelerator(hwndMain, haccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Это довольно большой намек на то, что вы хотите сделать перед отправкой сообщения: перехватывать сообщения, которые следует перехватить и обработать специальнодо того, как окно их видит.Сочетания клавиш являются классическим примером, их нужно обнаруживать независимо от того, какое окно имеет фокус.
Любая библиотека классов GUI предоставляет ее с помощью виртуального метода с именем, например App.PreProcessMessage, виртуальной функции, которую можно переопределитьтак что ваша программа может реализовать свои собственные ярлыки и еще много чего.