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

 

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

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

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

New -QfM-N
upen... Ctrl+0
Save* Ctri+S
'•Savees...
Print.. Ctrl+P
Print Preview
Pjint Setup..,
Exil
Рис. 21.2. Завершенное меню File
Откройте в редакторе акселераторов таблицу idr_mainframe, чтобы задать клавиатурный акселератор для команды Print... (Ctrl+P). Используйте способ, описанный ранее в гл. 10 "Создание программы MiniEdit", и добавьте акселератор с идентификатором id_FILE_print и комбинацией клавиш Ctrl+P.
Теперь необходимо включить в файл определения ресурсов MiniDraw некоторые дополнительные предопределенные ресурсы. Для этого выберите команду Resource Includes... в меню View Developer Studio. В диалоговом окне Resource Includes добавьте в конце текста в поле Compile-Time Directives следующую строку:
#include "afxprint.rc"
Завершенное диалоговое окно Resource Includes показано на рис. 21.3. Щелкните на кнопке ОК, а после запроса Developer Studio подтвердите свои действия. Добавление этой строки предписывает компилятору ресурсов добавить их определения, содержащиеся в списке Afxprint.rc, которые задают несколько ресурсов, используемых для поддержки команд Print... и Print Preview программы (например, диалоговое окно Printing, отображаемое во время печати).
Модификация текста программы
Первый шаг модификации текста программы состоит в создании обработчика для новой команды Print Setup..., добавленной в меню File. Его не нужно писать самостоятельно, так как класс cwinApp предоставляет обработчик, называемый OnFilePrintSetup. Однако MFC не добавляет его в схему сообщений, т. е. текущая функция не получает управление при выборе команды Print Setup... Следовательно, его необходимо вручную добавить в схему сообщений класса приложения MiniDraw. Для этого откройте файл MiniDraw.cpp и добавьте операторы, выделенные полужирным шрифтом, в определение схемы обработки сообщений.
III1111111111111II11111Ш1111111II1111111IIII11 III 1111II III 1111 II Класс CMiniDrawApp
BEGIN_MESSAGE_MAP(CMiniDrawApp, CWinApp) //{{AFX_MSG_MAP(CMiniDrawApp)
// Входы схемы обработки сообщений мастера ClassWizard ...
//)}AFX_MSG_MAP
// Команды работы с файлами документов ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END MESSAGE MAP()
Resource Includes
Symbol header file: :|resource.h 3ead-only symbol directives:
(¦include "afxres.h"
^ompile-time directives:
OK. Cancel
(¦pragma code page(1252) ¦*¦]
#endif //_WIN32
(¦include "res\MiniDraw.rc2" // non-lv ((include "afxtes.ic" //Standard > . Sendif
(¦include "afxpiint.rc'1 i:.
Рис. 21.3. Завершенное диалоговое окно Resource Includes
Новая запись в схеме сообщений приводит к тому, что при выборе команды PrintSetup... будет вызываться функция CWinApp::OnFilePrintSetup. Функция OnFilePrintSetup отображает диалоговое окно PrintSetup, в котором нужно выбрать тип принтера и установить его параметры. Это все, что необходимо для поддержки команды PrintSetup...
Подобным образом класс cview предоставляет обработчики сообщений для стандартных команд меню Print и Print Preview. Эти обработчики необходимо активировать, добавив их в схему сообщений для класса представления программы MiniDraw. Откройте файл MiniDrawView.cpp и добавьте следующие две записи в конце схемы обработки сообщений.
BEGIN_ME S SAGE_MAP(CMiniDrawView, CScrollView) //({AFX_MSG_MAP(CMiniDrawView) ON_WM_LBUTTONDOWN() ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() //}}AFX_MSG_MAP
ON_CQMMAND(ID_FILE_PRIMT, CView::OnFilePrint)
ON_COMMAND (ID_FILE_PRIMT_PREVIEW, CView: : OnFilePrintPreview)
END_MESSAGE_MAP()
Обе функции, CView: -.OnFilePrint и CView: -.OnFilePrintPreview, управляют операциями печати. Однако OnFilePrint передает результат на принтер, а функция OnFilePrintPreview — в окно предварительного просмотра печати, отображаемое поверх обычного окна программы. При этом она показывает результат в виде одной или двух печатаемых страниц. В процессе управления печатью эти функции вызывают виртуальные функции, определенные внутри класса CView. Реализация виртуальных функций в классе cview по умолчанию накладывает ограничение на процесс печати. Как будет показано далее в этой главе, для улучшения возможностей программы печати одну (или более) из этих функций можно переопределить.
Чтобы реализовать поддержку печати или предварительного просмотра печати, необходимо переопределить только виртуальную функцию OnPreparePrinting. MFC вызывает ее либо перед печатью, либо перед предварительным просмотром. Чтобы создать функцию OnPreparePrinting для программы MiniDraw, вызовите мастер ClassWizard, откройте вкладку Message Maps, выберите CMiniDrawView в списках Class Name и Object Ids, а в списке Messages — OnPreparePrinting и шелкните на кнопке Add Function. Затем щелкните на кнопке Edit Code, в функции OnPreparePrinting удалите вызов основной версии функции OnPreparePrinting и добавьте вызов функции CView::DoPrepa-rePrinting.
BOOL CMiniDrawView::OnPreparePrinting(CPrintlnfо* plnfo) {
Предыдущая << 1 .. 92 93 94 95 96 97 < 98 > 99 100 101 102 103 104 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100