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

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

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

Синтаксис

LPPRINTHOOKPROC Lpprinthookproc;

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

Параметры

unnamedParam1

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

unnamedParam2

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

unnamedParam3

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

unnamedParam4

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

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

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

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

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

Комментарии

При использовании функции PrintDlg для создания диалогового окна Печать можно предоставить процедуру перехватчика PrintHookProc для обработки сообщений или уведомлений, предназначенных для процедуры диалогового окна. Чтобы включить процедуру перехватчика, используйте структуру PRINTDLG , переданную в функцию создания диалога. Укажите адрес процедуры перехватчика в элементе lpfnPrintHook и укажите флаг PD_ENABLEPRINTHOOK в элементе 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

PRINTDLG

PostMessage

PrintDlg

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

WM_CTLCOLORDLG

WM_INITDIALOG