Фильтр - процедура 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 |
Нет |
Замечания по платформе |
Не имеется |