Функция обратного вызова LPFRHOOKPROC (commdlg.h)

Получает сообщения или уведомления, предназначенные для диалогового окна по умолчанию диалогового окна "Найти или заменить ". Процедура перехватчика FRHookProc — это определяемая приложением или библиотекой функция обратного вызова, используемая с функцией FindText или ReplaceText .

Тип LPFRHOOKPROC определяет указатель на эту функцию обратного вызова. FRHookProc — это заполнитель для имени функции, определяемой приложением.

Синтаксис

LPFRHOOKPROC Lpfrhookproc;

UINT_PTR Lpfrhookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

Параметры

unnamedParam1

Дескриптор диалогового окна "Найти или заменить ", для которого предназначено сообщение.

unnamedParam2

Идентификатор получаемого сообщения.

unnamedParam3

Дополнительные сведения о сообщении. Точное значение зависит от значения параметра unnamedParam2 .

unnamedParam4

Дополнительные сведения о сообщении. Точное значение зависит от значения параметра unnamedParam2 .

Если параметр unnamedParam2 указывает на WM_INITDIALOG сообщение, unnamedParam4 является указателем на структуру FINDREPLACE, содержащую значения, указанные при создании диалогового окна.

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

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

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

Комментарии

При использовании функций FindText или ReplaceText для создания диалогового окна Найти или Заменить можно предоставить процедуру перехватчика FRHookProc для обработки сообщений или уведомлений, предназначенных для этой процедуры. Чтобы включить процедуру перехватчика, используйте структуру FINDREPLACE , переданную в функцию создания диалога. Укажите адрес процедуры перехватчика в члене lpfnHook и флаг FR_ENABLEHOOK в элементе Flags .

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header commdlg.h (включая Windows.h)

См. также раздел

Общая библиотека диалоговых окон

Основные понятия

EndDialog

FINDREPLACE

FindText

PostMessage

Справочные материалы

ReplaceText

WM_CTLCOLORDLG

WM_INITDIALOG