Поделиться через


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

Получает сообщения или уведомления, предназначенные для диалогового окна по умолчанию диалогового окна Шрифт . Это процедура обратного вызова, определяемая приложением или библиотекой, которая используется с функцией ChooseFont .

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

Синтаксис

LPCFHOOKPROC Lpcfhookproc;

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

Параметры

unnamedParam1

Дескриптор диалогового окна Шрифт , для которого предназначено сообщение.

unnamedParam2

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

unnamedParam3

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

unnamedParam4

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

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

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

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

Комментарии

При использовании функции ChooseFont для создания диалогового окна Шрифт можно указать процедуру перехватчика CFHookProc для обработки сообщений или уведомлений, предназначенных для этой процедуры. Чтобы включить процедуру перехватчика, используйте структуру CHOOSEFONT , переданную в функцию создания диалога. Укажите адрес процедуры перехватчика в члене lpfnHook и укажите флаг CF_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)

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

CHOOSEFONT

ВыберитеФонт

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

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

EndDialog

PostMessage

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

WM_CTLCOLORDLG

WM_INITDIALOG