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