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

Фильтр - процедура FRHookProc - определяемая программой или определенная библиотекой процедура повторного вызова, которая используется стандартными диалоговыми окнами Найти (Find) и Заменить (Replace). Фильтр - процедура принимает сообщения или предупреждения, предназначенные для заданной по умолчанию процедуры диалогового окна.

Синтаксис

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

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

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

Замечания
Когда вы используете функции FindText или ReplaceText, чтобы создать стандартное диалоговое окно Найти (Find) или Заменить (Replace), вы можете предоставить фильтр - процедуру FRHookProc, чтобы обработать сообщения или предупреждения, предназначенные для процедуры диалогового окна. Чтобы разрешить действие фильтр - процедуры, используйте структуру FINDREPLACE, которую вы передали в функцию создания диалоговое окна. Установите адрес фильтр - процедуры в элементе lpfnHook, и установите флажок FR_ENABLEHOOK в элементе Flags.
Заданная по умолчанию процедура диалогового окна обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Хотя все другие сообщения, сначала принимает фильтр - процедура. Затем, возвращаемое значение фильтр - процедурой определяет, обрабатывает ли заданная по умолчанию процедура диалогового окна сообщение или игнорирует его.
Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. Вообще, если фильтр - процедура обрабатывает какое-либо сообщение WM_CTLCOLOR*, она должна возвратить допустимый дескриптор кисти для закрашивания фона определяемого элемента управления.
Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого, фильтр - процедура может вызывать функцию PostMessage, чтобы послать сообщение WM_COMMAND со значением IDABORT в процедуру диалогового окна. Регистрация IDABORT закрывает диалоговое окно и вынуждает функцию блока диалога возвратить значение ЛОЖЬ (FALSE). Если Вам нужно знать, почему фильтр - процедура закрыла диалоговое окно, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.
Вы можете делить на подклассы стандартные элементы управления стандартного диалогового окна. Однако, и процедура стандартного диалогового окна может тоже делить на подклассы элементы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует, что ваша процедура подкласса получит определенные элементом управления сообщения раньше процедуры подкласса, установленной процедурой диалогового окна.
FRHookProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции. Тип LPFRHOOKPROC - указатель на фильтр - процедуру FRHookProc.

Смотри также
EndDialog, FINDREPLACE, FindText, PostMessage, ReplaceText, WM_INITDIALOG, WM_CTLCOLORDLG

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

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

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