Фильтр - процедура PrintHookProc - это определяемая программой или библиотекой функция повторного вызова, которая используется функцией PrintDlg. Функция принимает сообщения или уведомления, предназначенные для заданной по умолчанию процедуры диалогового окна Печать (Print).
Тип LPPRINTHOOKPROC определяет указатель на эту функцию обратного вызова. PrintHookProc - имя - заместитель для определяемого программой или библиотекой имени функции.
Синтаксис
UINT_PTR CALLBACK PrintHookProc( HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam ); |
Параметры
hdlg
[in] Дескриптор блока диалога Печать (Print), для которого предназначено сообщение.uiMsg
[in] Идентификация принимаемого сообщения.wParam
[in] Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.lParam
[in] Определяет дополнительную информацию о сообщении. Точное значение зависит значения параметра uiMsg.Если параметр uiMsg обозначает сообщение WM_INITDIALOG, то lParam - указатель на структуру PRINTDLG, содержащую значения установленные тогда, когда создавалось диалоговое окно.
Возвращаемое значение
Если фильтр (hook) - процедура событий возвращает нуль, заданная по умолчанию процедура диалогового окна обрабатывает сообщение.
Если фильтр (hook) - процедура событий возвращает ненулевое значение, заданная по умолчанию процедура диалогового окна игнорирует это сообщение.
Замечания
Когда вы используете функцию PrintDlg, чтобы создать диалоговое окно Печать (Print), то можете для обработки сообщений или уведомлений, предназначенных для процедуры диалогового окна, предусмотреть фильтр - процедуру PrintHookProc. Чтобы подключить эту фильтр - процедуру, используйте структуру PRINTDLG, которую вы передали в функцию создавшую диалоговое окно. Установите в члене lpfnPrintHook адрес фильтр процедуры, а в элементе Flags установите флажок PD_ENABLEPRINTHOOK.
Процедура блока диалога по умолчанию обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Все другие сообщения фильтр - процедура принимает первая. Затем, возвращаемое значение фильтр - процедуры определяет, обрабатывать ли заданной по умолчанию процедуре диалогового окна сообщение или проигнорировать его.
Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG то, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. В большинстве случаев, если она обрабатывает какое-либо сообщение WM_CTLCOLOR*, то должна возвратить допустимый дескриптор кисти для закрашивания фона заданного органа управления.
Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого она может вызвать функцию PostMessage, чтобы послать сообщение WM_COMMAND со значением IDABORT процедуре диалогового окна. Извещение IDABORT закрывает диалоговое окно и заставляет функцию диалогового окна возвратить значение ЛОЖЬ (FALSE). Если вам нужно узнать почему фильтр - процедура закрыла блок диалога, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой.
Вы можете поделить на подклассы стандартные органы управления общего диалогового окна. Однако и процедура стандартного диалогового окна может также поделить на подклассы органы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса принимает определенные органом управления сообщения перед процедурой подкласса, установленной процедурой диалогового окна.
Смотри также
Обзор Библиотека стандартных диалоговых окон, Функции, используемые библиотекой стандартных диалоговых окон, EndDialog, PostMessage, PrintDlg, PRINTDLG, WM_INITDIALOG, WM_CTLCOLORDLG
Размещение и совместимость PrintHookProc |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
- |
Заголовочный файл |
|
- объявлено в |
Commdlg.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |