Win32 API. Справочник по стандартному диалоговому окну
Страница 13. Фильтр - процедура CFHookProc


Фильтр - процедура CFHookProc

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

Синтаксис

UINT APIENTRY CFHookProc
(
HWND hdlg,// дескриптор окна блока диалога
UINT uiMsg,// код сообщения
WPARAM wParam,// параметр сообщения
LPARAM lParam // параметр сообщения
);

Параметры
hdlg
Дескриптор окна блока диалога Шрифт (Font), для которого предназначено сообщение.
uiMsg
Идентифицирует полученное сообщение.
wParam
Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg.
lParam
Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg.
Если параметр uiMsg обозначает сообщение WM_INITDIALOG, lParam - указатель на структуру CHOOSEFONT, содержащую значения, которые были определены, когда было создано стандартное диалоговое окно.

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

Замечания
Когда вы используете функцию ChooseFont, чтобы создать Диалоговое окно Шрифт (Font), вы можете предоставить фильтр - процедуру CFHookProc, чтобы обработать сообщения или предупреждения, предназначенные для процедуры диалогового окна. Чтобы разрешить действие фильтр - процедуры, используйте структуру CHOOSEFONT, которую вы передали в функцию создания диалоговое окна. Установите адрес фильтр - процедуры в элементе lpfnHook, и установите флажок CF_ENABLEHOOK в элементе Flags.
Заданная по умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Все другие сообщения, сначала принимает фильтр - процедура. Затем, возвращаемое значение фильтр - процедурой определяет, обрабатывает ли заданная по умолчанию процедура диалогового окна сообщение или игнорирует его.
Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. Вообще, если фильтр - процедура обрабатывает какое-либо сообщение WM_CTLCOLOR*, она должна возвратить допустимый дескриптор кисти для закрашивания фона определяемого элемента управления.
Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого, она может вызывать функцию PostMessage, чтобы послать сообщение WM_COMMAND со значением IDABORT в процедуру диалогового окна. Посылка IDABORT закрывает диалоговое окно и вынуждает функцию блока диалога возвратить значение ЛОЖЬ (FALSE). Если Вам нужно знать, почему фильтр - процедура закрыла диалоговое окно, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.
Вы можете делить на подклассы стандартные элементы управления общего диалогового окна. Однако, и процедура стандартного диалогового окна может тоже делить на подклассы элементы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует, что ваша процедура подкласса получит определенные элементом управления сообщения раньше процедуры подкласса, установленной процедурой диалогового окна.
CFHookProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции. Тип LPCFHOOKPROC - указатель на фильтр - процедуру CFHookProc.

Смотри также
ChooseFont, CHOOSEFONT, EndDialog, PostMessage, WM_INITDIALOG, WM_CTLCOLORDLG

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

Windows NTДа 
Win95Да
Win32sДа
Импортируемая библиотекаОпределяемая пользователем
Заголовочный файлcommdlg.h
УникодНет
Замечания по платформеLPCFHOOKPROC

 
« Предыдущая статья   Следующая статья »