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


Метод IPrintDialogCallback::HandleMessage (commdlg.h)

Вызывается PrintDlgEx , чтобы предоставить приложению возможность обрабатывать сообщения, отправленные в дочернее диалоговое окно в нижней части страницы Общиена странице свойств печати. Дочернее диалоговое окно содержит элементы управления, аналогичные элементам диалогового окна Печать .

Синтаксис

HRESULT HandleMessage(
  HWND    hDlg,
  UINT    uMsg,
  WPARAM  wParam,
  LPARAM  lParam,
  LRESULT *pResult
);

Параметры

hDlg

Тип: HWND

Дескриптор дочернего диалогового окна в нижней части страницы Общие .

uMsg

Тип: UINT

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

wParam

Тип: WPARAM

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

lParam

Тип: LPARAM

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

Если параметр uMsg указывает WM_INITDIALOG сообщение, lParam — это указатель на структуру PRINTDLGEX , содержащую значения, указанные при создании страницы свойств.

pResult

Тип: LRESULT*

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

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

Тип: HRESULT

Верните S_OK , если ваша реализация IPrintDialogCallback::HandleMessage обработала сообщение. В этом случае функция PrintDlgEx не выполняет обработку сообщений по умолчанию.

Верните S_FALSE , если требуется, чтобы PrintDlgEx выполнял обработку сообщений по умолчанию.

Комментарии

Для уведомлений, передаваемых WM_NOTIFY сообщением, необходимо использовать функцию SetWindowLong со значением DWL_MSGRESULT , чтобы задать возвращаемое значение. При вызове SetWindowLong используйте GetParent(hDlg), чтобы задать DWL_MSGRESULT значение страницы Общие , которая является родительским элементом дочернего окна.

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

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

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

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

Требования

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

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

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

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

EndDialog

IPrintDialogCallback

Другие ресурсы

PRINTDLGEX

PostMessage

PrintDlgEx

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

SetWindowLong

WM_COMMAND

WM_CTLCOLORDLG

WM_INITDIALOG

WM_NOTIFY