Функция PrintDlgEx вызывает интерфейсный метод IPrintDialogCallback::HandleMessage, чтобы дать вашему приложению возможность обрабатывать сообщения, отправленные дочернему диалоговому окну в нижней части Общей (General) страницы набора страниц Свойства печати (Print Property Sheet). Дочернее диалоговое окно содержит точно такие же органы управления, что и диалоговое окно Печать (Print).
Синтаксис
HRESULT HandleMessage( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult ); |
Параметры
hDlg
Дескриптор дочернего диалогового окна в нижней части Общей (General) страницы.
uMsg
Идентифицирует принимаемое сообщение.
wParam
Устанавливает дополнительную информацию о сообщении. Точное значение зависит от величины uMsg параметра.
lParam
Устанавливает дополнительную информацию о сообщении. Точное значение зависит от величины uMsg параметра.
Если параметр uMsg обозначает сообщение WM_INITDIALOG, то lParam - указатель на структуру PRINTDLGEX, содержащую значения, определяемые когда создавался набор страниц свойств.
pResult
Указатель на переменную, которая обозначает результат, который возвратиться для сообщения процедурой диалогового окна . Указанное значение должно быть ИСТИНА (TRUE), если Вы обрабатываете сообщение, в противном случае оно должно быть ЛОЖЬ (FALSE) или, независимо от этого, соответствующее значение согласно типу сообщения.
Возвращаемое значение
Возвращаемо значение S_OK, если ваша реализация IPrintDialogCallback::HandleMessage обработало сообщение. В этой ситуации, функция PrintDlgEx не выполняет какую - либо заданную по умолчанию обработку сообщения.
Возвращаемое значение S_FALSE, если Вы хотите, чтобы PrintDlgEx выполнила свою заданную по умолчанию обработку сообщения.
Замечания
Поскольку уведомительные сообщения передаются при помощи сообщения WM_NOTIFY, Вы должны использовать функцию SetWindowLong со значением DWL_MSGRESULT, чтобы установить возвращаемое значение. Когда Вы вызываете функцию SetWindowLong, используете GetParent (hDlg), чтобы установить значение DWL_MSGRESULT Общей (General) страницы, которая является родителем дочернего окна.
Заданная по умолчанию процедура блока диалога для дочернего окна в нижней части Общей (General) страницы обрабатывает сообщение WM_INITDIALOG перед передачей его в метод IPrintDialogCallback::HandleMessage. Все другие сообщения, отправленные дочернему окну, IPrintDialogCallback::HandleMessage получает первым. Затем IPrintDialogCallback::HandleMessage возвращает значение, которое обуславливает, обрабатывать ли заданной по умолчанию процедуре диалогового окна сообщение или проигнорировать его.
Если метод IPrintDialogCallback::HandleMessage обрабатывает сообщение WM_CTLCOLORDLG то, он должен возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. В большинстве случаев, если IPrintDialogCallback::HandleMessage обрабатывает какое-либо сообщение WM_CTLCOLOR*, то должен возвратить допустимый дескриптор кисти для закрашивания фона заданного органа управления.
Не вызывайте функцию EndDialog из метода IPrintDialogCallback::HandleMessage. Вместо этого он может вызвать функцию PostMessage, чтобы поместить сообщение WM_COMMAND со значением IDABORT в процедуру диалогового окна. Извещение IDABORT закрывает Набор страниц Свойств печати (Print Property Sheet) и заставляет функцию PrintDlgEx возвратить значение PD_RESULT_CANCEL в члене dwResultAction структуры PRINTDLGEX. Если вам нужно узнать, почему IPrintDialogCallback::HandleMessage закрыл блок диалога, вы должны предусмотреть свой собственный механизм связи между методом IPrintDialogCallback::HandleMessage и вашей прикладной программой.
Вы можете поделить на подклассы стандартные органы управления дочернего диалогового окна в нижней части Общей (General) страницы. Эти стандартные органы управления подобны таким же элементам, находящимся в диалоговом окне Печать (Print) Однако и процедура диалогового окна по умолчанию может также поделить на подклассы органы управления. По этой причине, вы должны делить на подклассы органы управления тогда, когда ваш метод IPrintDialogCallback::HandleMessage обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса принимает определенные органом управления сообщения перед процедурой подкласса, установленной процедурой диалогового окна.
Смотри также
Обзор Библиотека стандартных диалоговых окон, Интерфейсные методы, используемые библиотекой стандартных диалоговых окон, EndDialog, PostMessage, PrintDlgEx, PRINTDLGEX, SetWindowLong, WM_COMMAND, WM_CTLCOLORDLG, WM_INITDIALOG, WM_NOTIFY
Размещение и совместимость IPrintDialogCallback::HandleMessage |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Нет |
Windows Me |
Нет |
Windows 98 |
Нет |
Windows 95 |
Нет |
Используемая библиотека |
- |
Заголовочный файл |
|
- объявлено в |
Commdlg.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |