Страница 19 из 59
Фильтр процедура PrintHookProc Фильтр - процедура PrintHookProc - определяемая программой или определенная библиотекой процедура повторного вызова, которая используется стандартным диалоговым окном Печать (Print). Фильтр - процедура принимает сообщения или предупреждения, предназначенные для заданной по умолчанию процедуры диалогового окна. Синтаксис UINT APIENTRY PrintHookProc ( HWND hdlg,// дескриптор окна блока диалога UINT uiMsg,// идентификатор сообщения WPARAM wParam,// параметр сообщения LPARAM lParam // параметр сообщения );
Параметры hdlg Дескриптор окна стандартного блока диалога Печать (Print), для которого предназначено сообщение. uiMsg Идентификация предаваемого сообщения. wParam Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg. lParam Определяет дополнительную информацию о сообщении. Точное значение зависит от значения параметра uiMsg. Если параметр uiMsg показывает сообщение WM_INITDIALOG, lParam - указатель на структуру PRINTDLG, содержащую значения определенные тогда, когда было создано стандартное диалоговое окно. Возвращаемые значения Если фильтр - процедура возвращает значение ноль, процедура диалогового окна по умолчанию обрабатывает сообщение. Если фильтр - процедура возвращает значение отличное от нуля, процедура диалогового окна по умолчанию игнорирует сообщение. Замечания Когда вы используете функцию PrintDlg, чтобы создать стандартное диалоговое окно Печать (Print), то можете для обработки сообщений или предупреждений, предназначенных для процедуры диалогового окна, предоставить фильтр - процедуру PrintHookProc. Чтобы разрешить действие этой фильтр - процедуры, используйте структуру PRINTDLG, которую вы передали в функцию создавшую диалоговое окно. Установите в элементе lpfnPrintHook адрес фильтр процедуры, а в элементе Flags установите флажок PD_ENABLEPRINTHOOK. Процедура блока диалога по умолчанию обрабатывает сообщение WM_INITDIALOG перед передачей его в фильтр - процедуру. Хотя все другие сообщения фильтр - процедура принимает первая. Затем, возвращаемое значение фильтр - процедуры определяет, обрабатывает ли заданная по умолчанию процедура диалоговое окна сообщение или игнорирует его. Если фильтр - процедура обрабатывает сообщение WM_CTLCOLORDLG, она должна возвратить допустимый дескриптор кисти для закрашивания фона диалогового окна. В большинстве случаев, если фильтр - процедура обрабатывает какое-либо сообщение WM_CTLCOLOR*, она должна возвратить допустимый дескриптор кисти для закрашивания фона определяемого элемента управления. Не вызывайте функцию EndDialog из фильтр - процедуры. Вместо этого, она может вызывать функцию PostMessage, чтобы послать процедуре диалогового окна сообщение WM_COMMAND со значением IDABORT. Отправка сообщения IDABORT закрывает диалоговое окно и вынуждает функцию блока диалога возвратить значение ЛОЖЬ (FALSE). Если вам нужно узнать, почему фильтр - процедура закрыла диалоговое окно, вы должны предоставить свой собственный механизм связи между фильтр - процедурой и вашей прикладной программой. Вы можете поделить на подклассы стандартные элементы управления стандартного диалогового окна. Однако и процедура стандартного диалогового окна также может делить на подклассы элементы управления. По этой причине, вы должны делить на подклассы элементы управления тогда, когда ваша фильтр - процедура обрабатывает сообщение WM_INITDIALOG. Это гарантирует то, что ваша процедура подкласса принимает определенные элементом управления сообщения перед процедурой подкласса, установленной процедурой диалогового окна. PrintHookProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции. Тип LPPRINTHOOKPROC - указатель на фильтр - процедуру PrintHookProc. Смотри также EndDialog, PostMessage, PrintDlg, PRINTDLG, WM_INITDIALOG, WM_CTLCOLORDLG Размещение и совместимость PrintHookProc Windows NTДа Win95Да Win32sДа Импортируемая библиотекаОпределяется пользователем Заголовочный файлcommdlg.h УникодНет Замечания по платформеLPPRINTHOOKPROC |