Печать по умолчанию
В этой статье объясняется процесс печати по умолчанию в Windows с точки зрения платформы MFC.
В приложениях MFC класс представления имеет функцию-член с именем OnDraw
, которая содержит весь код рисования. OnDraw
принимает указатель на объект CDC в качестве параметра. Этот CDC
объект представляет контекст устройства для получения изображения, созданного с помощью OnDraw
. Когда окно, отображающее документ, получает сообщение WM_PAINT , платформа вызывает OnDraw
и передает его контекст устройства для экрана ( объект CPaintDC , который должен быть конкретным). Соответственно, OnDraw
выходные данные переходит на экран.
При программировании для Windows отправка выходных данных на принтер очень похожа на отправку выходных данных на экран. Это связано с тем, что интерфейс графического устройства Windows (GDI) является аппаратным. Вы можете использовать те же функции GDI для отображения экрана или для печати с помощью соответствующего контекста устройства. CDC
Если объект, OnDraw
полученный представляет принтер, OnDraw
выходные данные будут поступать на принтер.
Это объясняет, как приложения MFC могут выполнять простую печать, не требуя дополнительных усилий в вашей части. Платформа заботится о отображении диалогового окна печати и создании контекста устройства для принтера. Когда пользователь выбирает команду "Печать" в меню "Файл", представление передает этот контекст OnDraw
устройства, в который рисует документ на принтере.
Однако существуют некоторые существенные различия между печатью и отображением экрана. При печати необходимо разделить документ на отдельные страницы и отобразить их одновременно, а не отображать любую часть в окне. Как corollary, вы должны знать о размере бумаги (будь то размер буквы, юридический размер или конверт). Вы можете печатать в разных ориентациях, например в альбомном или книжном режиме. Библиотека классов Microsoft Foundation не может предсказать, как приложение будет обрабатывать эти проблемы, поэтому он предоставляет протокол для добавления этих возможностей.
Этот протокол описан в статье "Многостраниковые документы".