4.36.2.2 Фильтр - процедура 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 

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 18.04.2002