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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 139 140 141 142 143 144 < 145 > 146 147 148 149 150 151 .. 173 >> Следующая

// TODO: установите режим отображения и размер
// (Обычно размер такой же, как возвращаемый из OnGetExtent)
pDC->SetMapMode (MM_ANISOTROPIC) ;
pDC->SetWindowOrg(0, 0) ;
// замените вызов, сгенерированный мастером AppWizard, // вызовом функции SetWindowExt: pDC->SetWindowExt (pDoc->GetDocSize ());
// TODO: добавьте здесь код отображения. Можно заполнить // размер HIMETRIC. Все рисунки помещаются в метафайл // контекста устройства (pDC)
// такой же код, как в CServDemoView::OnDraw: int Index = pDoc-X3etNumLines (); while (Index—)
pDoc-XSetLine (Index)->Draw (pDC);
return TRUE;
}
Обратите внимание: имеющийся в тексте программы вызов функции SetWindowExt переопределяет функцию SetWindowExt, сгенерированную AppWizard.
Как было описано ранее, функция CServDemoSrvrltem::OnDraw создает метафайл для отображения неактивного внедренного компонента в окне контейнера. Текст программы, сгенерированный мастером AppWizard, начинается с установки режима отображения в mm_anisotropic, обеспечивает выполнение масштабирования внедренного компонента, чтобы он помещался внутри окна контейнера. (Режимы отображения рассматривались в гл. 19). Затем вызывается функция cdc: :setWindowExt. Функция SetwindowExt задает общий горизонтальный и вертикальный размер в логических единицах изображения, отображаемого метафайлом. Функция SetwindowExt, сгенерированная мастером AppWizard, задает условный размер 3000 на 3000 логических единиц. Однако в эту функцию необходимо передать действительный логический размер внедренного компонента (получаемый при вызове новой функции cservDemoDoc: :GetDocSize). В результате рисунок полностью помещается внутри границ внедренного компонента в окне контейнера. Оставшийся добавленный текст программы такой же, как и для выполнения рисования в функции OnDraw класса представления.
Можно построить программу ServDemo, выполнить ее в автономном режиме, и она будет работать как третья версия программы MiniDraw (см. гл. 12). Если у вас есть программа-контейнер OLE, то можно выполнить программу ServDemo как сервер в режиме "на месте" или в режиме полного открытия, используя команды, описанные ранее (в параграфе "Внедрение, связывание и автоматизация"). В параграфе "Создание программы-контейнера" будет описана программа-контейнер, которую можно использовать для проверки ServDemo.
Текст программы ServDemo
В листингах с 24.1 по 24.12 приведены тексты программы ServDemo. Исходные файлы программы приведены в каталоге \ServDemo компакт-диска.
Листинг 24.1.
// ServDemo.h : главный файл заголовков приложения SERVDEMO #if !defined
(AFX_SERVDEMO_H_03A2EC86_ABBE_11D1_80FC_00C0F6A83B7F_INCLUDEDJ
idefine AFX_SERVDEMO_H_03A2EC86_ABBE_11D1_80FC_00C0F6A83B7F_INCLUDED_
#if _MSC_VER > 1000 tpragma once
#endif // _MSC_VER > 1000
iifndef _AFXWIN_H_
terror include 'stdafx.h' before including this file for PCH #endif
finclude "resource.h" // основные символические константы
11111111111111111111111111111111111111111111111111111111111111111111111 II Класс CServDemoApp:
// Смотрите реализацию этого класса в файле ServDemo.срр //
class CServDeraoApp : public CWinApp {
public:
CServDemoApp() ;
// Переопределения
// Переопределения виртуальных функций, // сгенерированные мастером ClassWizard //{{AFX_VIRTUAL(CServDemoApp) public:
virtual BOOL Initlnstance(); //)}AFX_VIRTUAL
// Реализация
COleTemplateServer m_server;
// Объект сервера для создания документа //{(AFX_MSG(CServDemoApp) afx_msg void OnAppAbout();
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять // и удалять здесь функции-члены класса
//НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода! //}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
111111П111111111111111111111111111111111111111111111111111111111111 II{{AFX_IN SERT_LOCATION}}
// Visual С++ вставит дополнительные объявления // сразу перед предыдущей строкой
#endif
// !defined(
// AFX_SERVDEMO_H_03A2EC86_ABBE_llDl_80FC_00C0F6A83B7F_INCLUDEDJ
Листинг 24.2.
// ServDemo.cpp : Определяет работу класса приложения
//
#include "stdafx.h" #include "ServDemo.h"
#include "MainFrm.h" #include "IpFrame.h" tinclude "ServDemoDoc.h" #include "ServDemoView.h"
#ifdef _DEBUG
#define new DEBUG NEW
{
•'3S1V.3 илпзэд
•' (aaiivj_iiNi_3TO_dai) xogsbBssswxjv
}
( Озт-итэ-roxjvi ) 37 310 имвіоиігдид ЗіиЛаиєиіґвигіини / /
}
Оээивззитзтит: :ddvouraa.AJSSo 1009
ddyouroaAjaso вззвіга випвєиігвипини //
111111111111111111111111111111111111111111111111111111111111111111 II
¦{ ( 3i*0 'qcx0 '8EX0 '93*0 'CPxrj '0*0 '03x0 '08x0)
'TPTTxrj 'aqqsxrj 'евээгвсхо) = PTSjo aiSlO gsuoo этцваэ
{лшє8^9лоооо-оло8-татт-аеда-є8оагуєо)//
аолвмифилнаїґи иічнчігвигіацо чівгїдіча ічдсьь 'члинаиєи ода зізжоглі // ітаинажоїгиаи гоотіва олчігої волзЛєчігоизи аолвиифилнэки іоіє //
.'ddyaq:; ddyouran.a:tss3
ddyouraaAjaso вэовшя імач,до инннэалониг/з //
1111111111111111111111111111111111111111111П11П111П111 III 11111111
{
aouEgsui^Tui еяиїтанЛф а ииПвєиігвигіини гчггнвиом эннаонэо // элилоэиоц ¦ EdoixAdiOHOx їґом алчавдоіґ чоаіґє :oaOi //
Предыдущая << 1 .. 139 140 141 142 143 144 < 145 > 146 147 148 149 150 151 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100