Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Статья: Создание приложений OLE 2

Название: Создание приложений OLE 2
Раздел: Рефераты по информатике
Тип: статья Добавлен 02:54:47 02 апреля 2011 Похожие работы
Просмотров: 13 Комментариев: 25 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно     Скачать

Создание приложений OLE 2

В этом разделе вы создадите два новых приложения OLE. Первое - простая программа-сервер OLE, второе - пример простого контейнера OLE. Эти программы предназначены для демонстрации минимальных затрат программирования, необходимых для создания приложений OLE 2.

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

При написании своих версий этих программ необходимо иметь в виду несколько моментов. Во-первых, в этой главе приводятся листинги только исходных, немодифицированных файлов.

Во-вторых, CLSID этих программ будет отличаться от CLSID программ, которые вы сгенерируете с помощью AppExpert. Это нормально и даже необходимо, поскольку с помощью CLSID одни серверные приложения в Windows отличаются от других.

В-третьих, эти примеры содержат минимум необходимых средств для того, чтобы начать программировать с OLE. Вы можете использовать эти примеры в качестве начального кода для создания своего действительно полезного сервера или контейнера. В этой главе просто не хватает места для описания реализации функциональных сервера и контейнера - в этом случае вам понадобился бы грузоподъемник, чтобы положить эту книгу на стол.

Создание сервера OLE

Первое приложение OLE в этой главе - сервер. В этом примере вы построите полный сервер - сервер, который может использоваться и как автономное приложение, и как сервер. Создавая автономный сервер (т.е. в виде исполняемой программы .ЕХЕ, а не в виде динамически подключаемой библиотеки DLL), вы упрощаете процесс регистрации сервера в Windows.

Начальный процесс разработки сервера прост. Сначала из интегрированной среды Borland C++ версии 4.5 запустите AppExpert. Задайте каталог и имя вашего проекта. Я поместил свой проект в каталог BC45SOURCEOLESVR. Проект я назвал OLESVR (я всегда называю проекты и каталоги проектов одним и тем же именем, это облегчает запоминание). Ниже приводится последовательность действий, в результате которых был создан проект OLESVR.

Запустите AppExpert. В первом диалоговом окне следует задать имя и каталог проекта. Как уже отмечалось, я использовал OLESVR для задания обоих.

После выбора ОК в диалоговом окне имени и каталога проекта следующий раздел АррЕхреrt - диалоговое окно Application General Options (основные опции приложения). Это диалоговое окно позволяет задать конфигурацию приложения, генерируемого AppExpert. Вам придется модифицировать несколько опций для проекта OLESVR.

Первая опция, которую необходимо изменить, находится в блоке Application: Summary. Заменитепараметрпоумолчанию Multiple document interface на Single document interface. Это изменение согласуется с призывом Microsoft делать ставку на однодокументные приложения для Windows. На рис. 21.1 демонстрируется модифицированный блок Application: Summary.

Второе изменение, которое необходимо внести, - указать AppExpert, что ваша программа будет сервером OLE. Это изменение вносится в пункт Application: OLE 2 Options, имеющий ряд опций OLE 2, которые можно задавать. Поскольку вы создаете сервер OLE, вы будете оперировать только элементами блока группы OLE 2 Server: (поищите его в правой верхней части диалога). Выберите кнопку ячейки пометки Server EXE. На рис. 21.2 демонстрируются изменения, проведенные в пункте Application:OLE 2 Options.

При желании вы можете заполнить элементы пункта Application: Admin Options блока диалога AppExpert. С его помощью вы можете задать в приложении заметку об авторском праве, имя и информацию о версии. Все элементы в Application: Admin Options необязательны, и вы можете их не задавать.

Подпункты пункта Main Window не нуждаются в модификациях, их следует оставить заданными значениями по умолчанию. Для данного приложения нет необходимости менять что-либо в этих подпунктах. Пункт MDI Child/View неприменим для этого проекта, поэтому нет нужды в нем что-нибудь менять.

После задания всех необходимых модификаций следует выбрать кнопку Generate в нижней части блока диалога AppExpert Application General Options. AppExpert запросит у вас подтверждение, действительно ли вы собираетесь создать проект; после принятия подтверждения AppExpert сгенерирует приложение. На рис. 21.3 приводится конечный проект, загруженный в интегрированную среду Borland C++ версии 4.5.

Рис. 21.3. Проект OLESVR загружен в интегрированную среду Borland C++ версии 4.5

Теперь, когда программа сгенерирована, в нее следует добавить код, задающий функциональность сервера OLE. Необходимо включить код, рисующий изображение, а также провести другие незначительные изменения.

К счастью, помимо Borland C++ версии 4.5 можно воспользоваться программой ClassExpert, что облегчит внесение большей части изменений. Предположим, вы хотите сперва заняться вопросами отображения. Как и в любой созданной с помощью AppExpert программе, основная часть рисования выполняется классом отображения, производным от класса OWL TOleView. Файл, в котором содержится реализация отображения, имеет имя LSVROLVW.CPP. В листинге 21.1 приводится первоначальный файл OSROLVW.CPP.

Листинг 21.1 (файл реализации класса отображения OLESVR, OSVROLVW.CPP)

/* проект olesvr

Авторское право _ 1994

ПОДСИСТЕМА: Приложение olesvr.exe

ФАЙЛ: svrolvw.cpp

Исходный файл реализации olesvrOleView (TOleView)

*/

#include <owlowlpch.h>

#pragma hdrstop

#include "olsvrapp.h"

#include "Isvrolvw. h"

#include <stdio.h>

// Реализация olesvrOleView

// Создать таблицу для всех сообщений/команд, поддерживаемых olsvrOleView,

// производнымот TOleView

DEFINE_RESPONSE_TABLE1 (olesvrOleView, TOleView)

// olesvr0leViewRSP_TBL_BEGIN

EV_WM_GETMINMAXINFO,

EV_OC_VIEWSHOWTOOLS,

// olesvr0leViewRSP_TBL_END

END_RESPONSE_TABLE;

///////////////////////////////////////////////////////////////

// olesvrOleView

// Обработкасоздания/уничтожения

olesvrOleView::olesvrOleView (TDocument& doc, TWindow* parent)

: TOleView(doc, parent)

{

ToolBar = 0;

// ВСТАВИТЬ >> В этом месте код вашего конструктора

}

olesvrOleView::~olesvrOleView ()

{

// ВСТАВИТЬ>> В этом месте код вашего деструктора

}

//

// Процедура рисования для Window, Printer и PrintPreview клиента TOleView

//

void olesvrOleView::Paint (TDC& dc, bool erase, TRect& rect)

{

olesvrApp *theApp = TYPESAFE_DOWNCAST(GetApplication(), olesvrApp);

if (theАрр) {

// рисовать только в случае, если необходимо что-нибудь напечатать или отобразить,

// иначе не производить никаких действий

if (theApp->Printing && theApp->Printer && ! rect.IsEmpty()) {

// использовать pageSize для получения размера окна для визуализации информации

// для Window - это рабочая область,

// для принтера - это размеры контекста устройства и

// для print preview - это окно формата

TSize pageSize( rect. right - rect. left, rect. bottom - rect. top);

TPrintDialog::TData &printerData = theApp->Printer->GetSetup();

// вычислить число страниц, которые необходимо напечатать

printerData.MinPage = 1;

printerData.MaxPage = 1;

TOcView *ocView = GetOcView();

// Рисование TOcPart поумолчанию

TRect CLientRect = GetClientRect();

TRect logicalRect = clientRect + (TSize&)ocView->GetOrigin();

for (TOcPartCollectionlter i(GetOcDoc()->GetParts()); i; i++) {

TOcPart& p = *i.Current();

if (p.IsVisible(logicalRect)) {

TRect r = p.GetRect();

r -= ocView->GetOrigin();

p.Draw(dc, r, clientRect); // Нарисовать внедренный объект

if (p.IsSelected()) {

TUIHandle handle(r, TUIHandle::HandlesIn | TUIHandle::Grapples |

TUIHandle::HatchBorder, 5);

handle. Paint(dc);

} else {

TUIHandle handle(r, TUIHandle::HatchBorder, 5);

handle. Paint(dc);

}

}

}

// ВСТАВИТЬ>> В этом месте выполняется печать

TOleView::Paint(dc, erase, rect);

} else {

// ВСТАВИТЬ>> В этом месте выполняется обычное рисование

}

dc.TextOut(0, 30, "olesvr OLE Server");

}

}

void olesvrOleView::EvGetMinMaxInfo (MINMAXINFO far& minmaxinfo)

{

olesvrApp *theApp = TYPESAFE_DOWNCAST(GetApplication(), olesvrApp);

if (theApp) {

if (theApp->Printing) {

minmaxinfo.ptMaxSize = TPoint( 32000, 32000);

minmaxinfo.ptMaxTrackSize = TPoint(32000, 32000);

return;

}

}

TOleView::EvGetMinMaxInfo(minmaxinfo);

}

bool olesvrOleView::EvOcViewShowTools (TOcToolBarlnfo far& tbi)

{

// Сконструировать и создать панель управления для отображения, уничтожить

// нашу панель для сокрытия

if (tbi.Show) {

if (!ToolBar) {

ToolBar = new TControlBar(this);

olesvrApp *theApp = TYPESAFE_DOWNCAST(GetApplication(), olesvrApp);

CHECK(theApp);

theApp->CreateGadgets(ToolBar, true);

}

ToolBar->Create();

tbi.HTopTB = (HWND) *ToolBar;

} else {

if (ToolBar) {

ToolBar->Destroy();

delete ToolBar;

ToolBar = 0;

}

}

return true;

}

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита04:30:28 04 ноября 2021
.
.04:30:27 04 ноября 2021
.
.04:30:25 04 ноября 2021
.
.04:30:23 04 ноября 2021
.
.04:30:22 04 ноября 2021

Смотреть все комментарии (25)
Работы, похожие на Статья: Создание приложений OLE 2

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(290365)
Комментарии (4189)
Copyright © 2005-2021 HEKIMA.RU [email protected] реклама на сайте