Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 100

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 94 95 96 97 98 99 < 100 > 101 102 103 104 105 106 .. 173 >> Следующая

OK {
Cancel
Рис. 21.5. Диалоговое окно Print
Наконец, если выбрана команда меню Print Preview, программа отображает окно предварительного просмотра печати, содержащее образ целой печатаемой страницы в масштабе, соответствующем окну программы. Окно предварительного просмотра печати позволяет оценить внешний вид скомпонованной страницы, (но не выполнять редактирование рисунка). Для редактирования нажмите на кнопке Close и вернитесь в обычное окно представления. Окно просмотра печати, отображаемое окончательной программой MiniDraw, показано далее, на рис. 21.8.
Добавление средств
печати в окно представления класса CEditView
Если класс представления в программе наследуется из класса CEditView, рассмотренного в гл. 10, то MFC и Windows предоставляют большую часть кода, требуемого для печати. Даже если в мастере AppWizard не была выбрана опция Printing and Print Preview, можно реализовать команды Print..., Print Preview и Print Setup самому, потратив небольшие усилия на программирование.
Чтобы реализовать команду Print..., просто добавьте ее в меню File, задав идентификатор id_file_print_preview, без дальнейшего изменения кода. Результи-рующая команда Print будет печатать весь текст документа, занимающий даже более одной страницы.
Для реализации команды Print Preview добавьте ее в меню File, присвоив идентификатор id_file_print_preview, затем добавьте в схему сообщений оператор include для вставки файла Afxprint.rc и макрос on_command для класса представления, как описано в этом разделе.
Чтобы реализовать команды Print... или Print Preview, не нужно создавать функцию OnPreparePrinting.
Процедура реализации команды Print Setup совпадает с описанной в этом параграфе для программы MiniDraw.
Усовершенствованная печать
С добавленными средствами печати программа MiniDraw печатает или просматривает только часть рисунка, поместившуюся на одной странице. Оставшаяся часть рисунка игнорируется. В этом разделе возможности программы будут расширены таким образом, чтобы она печатала весь рисунок. Любая часть рисунка, которая не поместилась на одной странице, будет печататься на дополнительных. Как вы увидите, это достигается переопределением некоторых вызываемых при печати виртуальных функций.
Заметьте: текущая версия функции OnDraw всегда рисует границу справа и внизу рисунка. Однако граница служит только для ограничения рисунка внутри окна представления. На печатной копии рисунка она не появляется. В этом разделе команда OnDraw модифицируется таким образом, что граница будет печататься только в случае, если выводимая информация направляется в окно представления.
Изменение размера рисунка
В программе MiniDraw устанавливается размер рисунка 640 на 480 пикселей (см. гл. 13). Для большинства принтеров рисунок такого размера легко помещается на одной странице. Чтобы продемонстрировать способы печати нескольких страниц, необходимо модифицировать программу MiniDraw для работы с рисунками, размеры которых превышают стандартную печатную страницу. Чтобы выполнить это, сначала определите целочисленные константы для ширины и высоты рисунка в начале файла MiniDrawView.h.
const int DRAWWIDTH = 4000; // ширина рисунка const int DRAWHEIGHT = 6000; // высота рисунка
class CMiniDrawView : public CScrollView {
В функции OnlnitialUpdate файла MiniDrawView.cpp используйте эти константы вместо числовых значений (640 и 480).
void CMiniDrawView::OnlnitialUpdate() (
// todo: Здесь добавьте собственный код // и/или вызов базового класса
SIZE Size = (DRAWWIDTH, DRAWHEIGHT);
SetScrollSizes (MM_TEXT, Size);
)
Использование констант drawwidth и drawheight вместо числовых значений облегчает изменение размера рисунка. Функция OnlnitialUpdate описана в параграфе "Ограничение размера рисунка" гл. 13.
При изменении размера рисунка необходимо изменить номер версии, используемый для сериализации документа, чтобы не прочитать по ошибке файл, созданный предыдущей версией (или, используя предыдущую версию программы, прочитать файл, созданный текущей версией). Для этого откройте файл MiniDrawView.cpp и измените номер версии с 2 на 3 в каждом вхождении макроса implement_serial (вы должны найти восемь вхождений). Например, вы должны изменить макрос
IMPLEMENT_SERIAL (CFigure, CObject, 2)
на
IMPLEMENT_SERIAL (CFigure, CObject, 3)
Номера версий рассмотрены в параграфе "Сериализация данных документа" гл. 12.
Примечание
Программа рисования обычно позволяет устанавливать размер каждого рисунка чаще всего с помощью команды меню Options программы. Если рисунок сохраняется в файле на диске, то его размер тоже будет сохранен вместе с данными для отдельных фигур.
Переопределение виртуальных функций печати
Как упоминалось ранее, когда MFC печатает или просматривает документ, вызываются виртуальные функции, определенные внутри класса с view и предназначенные для выполнения различных задач печати. Чтобы улучшить процесс печати, можно переопределить одну или несколько из этих функций внутри класса представления программы, и добавить их код. На рис. 21.6 показан общий процесс печати и предварительного просмотра, а также место вызова каждой виртуальной
Предыдущая << 1 .. 94 95 96 97 98 99 < 100 > 101 102 103 104 105 106 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100