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


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

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

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

Синтаксис

LPCCHOOKPROC Lpcchookproc;

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

Параметры

unnamedParam1

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

unnamedParam2

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

unnamedParam3

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

unnamedParam4

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

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

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

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

Комментарии

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

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

CHOOSECOLOR

Выбор цвета

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

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

EndDialog

PostMessage

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

WM_CTLCOLORDLG

WM_INITDIALOG