Функция CFHookProc


Фильтр - процедура CFHookProc - определяемая программой или  библиотекой процедура повторного вызова, которая используется функцией ChooseFont. Фильтр - процедура принимает сообщения или уведомления, предназначенные для заданной по умолчанию процедуры диалогового окна Шрифт (Font).

Синтаксис

UINT_PTR CALLBACK CFHookProc(      
    HWND hdlg,
    UINT uiMsg,
    WPARAM wParam,
    LPARAM lParam
);

Параметры

hdlg

[in] Дескриптор окна блока диалога Шрифт (Font), для которого предназначено сообщение.

uiMsg

[in] Идентифицирует полученное сообщение.

wParam

[in] Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg.

lParam

[in] Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg. Если параметр uiMsg обозначает сообщение WM_INITDIALOG, lParam - указатель на структуру CHOOSEFONT, содержащую значения, которые были определены, при создании стандартного диалогового окна.

Возвращаемые значения

Если фильтр - процедура возвращает нуль, заданная по умолчанию процедура диалогового окна обрабатывает сообщение.

Если фильтр - процедура возвращает значение не нуль, заданная по умолчанию процедура диалогового окна игнорирует это сообщение.

Замечания

Когда вы используете функцию ChooseFont, чтобы создать диалоговое окно Шрифт (Font), вы можете предусмотреть фильтр - процедуру CFHookProc, чтобы обрабатывать сообщения или уведомления, предназначенные для процедуры диалогового окна. Чтобы разрешить действие фильтр - процедуры, используйте структуру CHOOSEFONT, которую вы передали в функцию создания диалогового окна. Установите адрес фильтр - процедуры в члене этой процедуры lpfnHook, а в члене Flags установите флажок CF_ENABLEHOOK.

Заданная по умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Все другие сообщения, сначала принимает фильтр - процедура. Затем, возвращаемое значение фильтр - процедурой определяет, обрабатывает ли заданная по умолчанию процедура диалогового окна сообщение или игнорирует его.

Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. Вообще, если фильтр - процедура обрабатывает какое-либо сообщение формата WM_CTLCOLOR*, она должна возвратить допустимый дескриптор кисти для закрашивания фона определяемого органа управления.

Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого, фильтр - процедура может вызывать функцию PostMessage, чтобы передать сообщение WM_COMMAND со значением IDABORT в процедуру диалогового окна. Извещение IDABORT закрывает диалоговое окно и вынуждает функцию блока диалога возвратить значение ЛОЖЬ (FALSE). Если Вам нужно знать, почему фильтр - процедура закрыла диалоговое окно, вы должны предусмотреть свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.

Вы можете делить на подклассы стандартные органы управления общего диалогового окна. Однако, процедура диалогового окна может тоже делить на подклассы элементы управления. По этой причине, вы должны делить на подклассы органы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса получит определяемые органом управления сообщения раньше процедуры подкласса, установленной процедурой диалогового окна.

Смотри также 

Обзор Библиотека стандартных диалоговых оконФункции, используемые библиотекой стандартных диалоговых окон, ChooseFont, CHOOSEFONT, EndDialog, PostMessage, WM_INITDIALOG, WM_CTLCOLORDLG

Размещение и совместимость CFHookProc

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

-

Заголовочный файл

 

- объявлено в

Commdlg.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Hosted by uCoz