Win32 API. Библиотека стандартных диалоговых окон - Настройка макета страницы

ОГЛАВЛЕНИЕ

 

Настройка макета страницы

Диалоговое окно Параметры страницы (Page Setup) включает в себя изображение макета страницы, который показывается, как выбор пользователя воздействуют на вид распечатки выводимых данных. Изображение состоит из прямоугольника, который представляет собою выбранный тип бумаги или конверта, с прямоугольником пунктира, представляющим текущие поля, а неполные символы (греческий текст) показывают, как будет смотреться текст на напечатанной странице.

Когда Вы вызываете функцию PageSetupDlg, Вы можете предоставить фильтр - процедуру PagePaintHook, чтобы настроить вид макета страницы.

Чтобы разрешать действия фильтр - процедуре PagePaintHook.

1. Установите флажок PSD_ENABLEPAGEPAINTHOOK в элементе Flags структуры PAGESETUPDLG.

2. Установите адрес фильтр - процедуры в элементе lpfnPagePaintHook.

Всякий раз, когда диалоговое окно собирается чертить содержание макета страницы, фильтр - процедура принимает следующие сообщения в порядке, в котором они перечислены:

  • WM_PSD_PAGESETUPDLG - Диалоговое окно собирается сделать прорисовку макета страницы. Фильтр - процедура может использовать это сообщение, чтобы подготовиться к рисованию содержания макета страницы.
  • WM_PSD_FULLPAGERECT - Диалоговое окно собирается сделать прорисовку макета страницы. Это сообщение определяет границы прямоугольника макета страницы.
  • WM_PSD_MINMARGINRECT - Диалоговое окно собирается сделать прорисовку макета страницы. Это сообщение определяет прямоугольник поля страницы.
  • WM_PSD_MARGINRECT - Диалоговое окно собирается сделать прорисовку прямоугольника полей страницы.
  • WM_PSD_GREEKTEXTRECT - Диалоговое окно собирается сделать вывод греческого текста внутри прямоугольника полей страницы.
  • WM_PSD_ENVSTAMPRECT - Диалоговое окно собирается делать прорисовку в прямоугольнике макета страницы в виде конверта с маркой. Это сообщение посылается только для конвертов.
  • WM_PSD_YAFULLPAGERECT - Диалоговое окно собирается делать прорисовку в области адреса возврата в макете страницы в виде конверта. Это сообщение посылается для конвертов и других размеров бумаги.

Если фильтр - процедура возвращает значение ИСТИНА (TRUE) для любого из первых трех сообщений в порядке следования прорисовки (WM_PSD_PAGESETUPDLG, WM_PSD_FULLPAGERECT или WM_PSD_MINMARGINRECT) диалоговое окно больше не посылает сообщения и не прорисовывает макет страницы до тех пор, пока в следующий раз система не потребуется перерисовать макет страницы. Если фильтр - процедура возвращает ЛОЖЬ (FALSE) для всех этих трех сообщений, диалоговое окно посылает остающиеся сообщения в порядке следования прорисовки.

Если фильтр - процедура возвращает значение ИСТИНА (TRUE) для любого из остающихся сообщений в порядке следования прорисовки, диалоговое окно не выводит соответствующую часть макета страницы. Если фильтр - процедура возвращает значение ЛОЖЬ (FALSE) для любого из этих сообщений, диалоговое окно выводит эту часть макета страницы.

Чтобы не дать диалоговому окну рисовать содержание макетов страниц, вы можете установить флажок PSD_DISABLEPAGEPAINTING. Этот флажок не воздействует на вашу фильтр - процедуру PagePaintHook, которая все еще принимает все WM_PSD_* сообщения и может выводить содержание макета страницы.