На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

WH_MSGFILTER and WH_SYSMSGFILTER Hooks



The WH_MSGFILTER and WH_SYSMSGFILTER hooks enable you to monitor messages about to be processed by a menu, scroll bar, message box, or dialog box, and to detect when a different window is about to be activated as a result of the user's pressing the ALT+TAB or ALT+ESC key combination. The WH_MSGFILTER hook can only monitor messages passed to a menu, scroll bar, message box, or dialog box created by the application that installed the hook procedure. The WH_SYSMSGFILTER hook monitors such messages for all applications.

The WH_MSGFILTER and WH_SYSMSGFILTER hooks enable you to perform message filtering during modal loops that is equivalent to the filtering done in the main message loop. For example, an application often examines a new message in the main loop between the time it retrieves the message from the queue and the time it dispatches the message, performing special processing as appropriate. However, during a modal loop, the system retrieves and dispatches messages without allowing an application the chance to filter the messages in its main message loop. If an application installs a WH_MSGFILTER or WH_SYSMSGFILTER hook procedure, the system calls the procedure during the modal loop.

An application can call the WH_MSGFILTER hook directly by calling the CallMsgFilter function. By using this function, the application can use the same code to filter messages during modal loops as it uses in the main message loop. To do so, encapsulate the filtering operations in a WH_MSGFILTER hook procedure and call CallMsgFilter between the calls to the GetMessage and DispatchMessage functions.

while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
if (!CallMsgFilter(&qmsg, 0))
DispatchMessage(&qmsg);
}


The last argument of CallMsgFilter is simply passed to the hook procedure; you can enter any value. The hook procedure, by defining a constant such as MSGF_MAINLOOP, can use this value to determine where the procedure was called from.
For more information, see the MessageProc and SysMsgProc functions.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

WH_MSGFILTER и Захват WH_SYSMSGFILTER



WH_MSGFILTER И захват WH_SYSMSGFILTER допустимый Вы, чтобы проверять сообщения вновь обрабатывавшиеся меню, перемещать зону, блока сообщения, или диалоговый блока, и, чтобы обнаруживаться когда другое окно собирается быть активизировано в результате нажимать пользователя ALT+TAB или ключевая комбинация ALT+ESC. Захват WH_MSGFILTER может только проверить сообщения пройденные в меню, перемещать зону, блока сообщения или общаться блок создавался приложением, которое устанавливало рычажную процедуру. Захват WH_SYSMSGFILTER проверяет такие сообщения для всех приложений.

WH_MSGFILTER И захват WH_SYSMSGFILTER допустимый Вы, чтобы выполнять сообщение, фильтрующееся в течение модальных циклов, которые - эквивалент фильтрации сделанный в основном цикле сообщения. Например, приложение часто изучает новое сообщение в основном цикле между временем, которое он извлекает сообщению из очереди и время это посылает сообщение, выполняющее специальным обрабатывая как подходящий. Тем не менее, в течение модального цикла, система извлекает и посылает сообщения не допуская приложение шанс, чтобы фильтровать сообщения в свой основной цикл сообщения. Если приложение устанавливает WH_MSGFILTER или процедура захвата WH_SYSMSGFILTER, система вызывает процедуру в течение модального цикла.

Приложение может вызвать WH_MSGFILTER перехватывает непосредственно вызывая функцию CallMsgFilter. Используя эту функцию, приложение может использовать тот же код, чтобы фильтровать сообщения в течение модальных циклов как оно используется в основном цикле сообщения. Для того, чтобы делать так, изолируйте фильтрующие операции в процедуре захвата WH_MSGFILTER и вызывайте CallMsgFilter между вызовами в GetMessage и функции DispatchMessage.

пока (GetMessage(&msg, (HWND) НЕДЕЙСТВИТЕЛЬНЫЙ, 0, 0))
{
если (!CallMsgFilter(&qmsg, 0)) DispatchMessage(&qmsg);
}


Последний аргумент CallMsgFilter просто пройден в рычажную процедуру; Вы можете ввести любую величину. Рычажная процедура, определяя константу как например, MSGF_MAINLOOP, может использовать эту величину, чтобы определяться где процедура была вызвана из.
Более подробно, смотри MessageProc и функции SysMsgProc.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz