Во время выполнения поток может опросить состояние своих очерсдсй вызовом GetQueueStatus:
DWORD GetQueueStatus(UINT fuFlags);
Параметру fuFlags — флаг или группа флагов, объединенных побитовой операци ей OR, он позволяет проверить значения отдельных битов пробуждения (wake bits) Допустимые значения флагов и их смысл описаны в следующей таблице.
Флаг |
Сообщение в очереди |
QS_KEY |
WM_KEYUP,WM_KEYDOWN, WM_SYSKEYUP или WM_SYSKEYDOWN |
QS_MOUSEMOVE |
WM_MOUSEMOVE |
QS_MOUSEBTITTON |
WM_?BUTTON* (где знак вопроса заменяет букву L, М или R, а звездочка — DOWN, UP или DBLCLK) |
QS_MOUSE |
То же, что QS_MOUSEMOVE | QS_MOUSEBUTTON |
QS_INPUT |
То же, что QS_MOUSE | QS_KEY |
QS_PAINT |
WM_PAINT |
QS_TIMER |
WM_TIMER |
QS_HOTKEY |
WM_HOTKEY |
QS_POSTMESSAGE |
Асинхронное сообщение (отличное от события аппаратного ввода), этот флаг идентичен QS_ALLPOSTMESSAGE с тем исклю чением, что сбрасывается при отсутствии асинхронных сообще ний в диапазоне действия фильтра сообщений |
QS_ALLPOSTMESSAGE |
Асинхронное сообщение (отличное от события аппаратного вво да); этот флаг идентичен QS_POSTMESSAGE с тем исключением, что сбрасывается лишь при полном отсутствии каких-либо асин хронных сообщений (вне зависимости от фильтра сообщений) |
QS ALLEVENTS |
Тоже, что QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY |
QS_QUIT |
Сообщает о вызове PostQuitMessage, этот флаг не задокументиро ван, его нет в WinUser.h, и он используется самой системой |
QS_SENUMESSAGE |
Синхронное сообщение, посланное другим потоком |
QS_ALLINPUT |
То же, что QS_ALLEVENTS | QS_SENDMESSAGF |
При вызове GetQueueStatus параметр fuFlags сообщает функции, наличие каких типов сообщений в очереди следует проверить. Чем меньше идентификаторов QS_* объединено побитовой операцией OR, тем быстрее отрабатывается вызов Результат сообщается в старшем слове значения, возвращаемого функцией. Возвращаемый на бор флагов всегда представляет собой подмножество того набора, который Вы зап росили от функции. Например, если Вы делаете такой вызов.