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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 154 155 156 157 158 159 < 160 > 161 162 163 164 165 166 .. 173 >> Следующая

{
// TODO: Здесь добавьте код конструктора
CContDemoCntrltem::"-CContDemoCntrltem () 1
// TODO: Здесь добавьте код очистки
void CContDemoCntrltem::OnChange(OLE_NOTIFICATION nCode, DWORD dwParam) {
ASSERT VALID(this);
COleClientltem::OnChange(nCode, dwParam);
// Когда редактируется компонент (либо на месте, либо в режиме // полного открытия), он передает сообщение методу OnChange для // изменения состояния компонента или его представления
// TODO: сделайте компонент недействительным, вызвав UpdateAllViews // (с указаниями, требуемыми для вашего приложения)
GetDocument()->UpdateAllViews(NULL);
// сейчас обновите все представления/без указаний
BOOL CContDemoCntrltem::OnChangeltemPosition(const CRectS rectPos) {
ASSERT_VALID(this);
// При активации режима редактирования на месте функция
// CContDemoCntrltem::OnChangeltemPosition вызывается сервером
// для изменения позиции окна редактирования на месте.
// Обычно это вызвано изменением данных в документе сервера,
// если изменяется их объем или размеры окна редактирования
//
// Здесь по умолчанию вызывается базовый класс, вызывающий // COleClientltem::SetltemRects для перемещения компонента
if (!COleClientltem::OnChangeltemPosition(rectPos)) return FALSE;
// TODO: Сохраните содержимое прямоугольной области, //в которой находится данный компонент
return TRUE;
}
void CContDemoCntrltem::OnGetltemPosition(CRectS rPosition) {
ASSERT_VALID(this);
// При редактировании на месте вызывается функция
// CContDemoCntrltem::OnGetltemPosition для размещения этого
// компонента. При стандартной реализации с помощью мастера
// AppWizard возвращается закодированный прямоугольник.
// Обычно он отражает положение компонента относительно окна
// представления. Чтобы получить представление,
// вызовите функцию CContDemoCntrltem::GetActiveView
// TODO: передайте действительные размеры прямоугольника // (в пикселях) в rPosition
rPosition.SetRect(10, 10, 210, 210);
I
void CContDemoCntrltem::OnActivate() {
// Можно активировать только один компонент на рамку CContDemoView* pView = GetActiveView(); ASSERT_VALID(pView);
COleClientltem* pltem = GetDocument()->GetInPlaceActiveItem(pView); if (pltem != NULL && pltem != this) pItem->Close();
COleClientltem::OnActivate();
}
void CContDemoCntrltem::OnDeactivateUI(BOOL bUndoable) {
COleClientltem::OnDeactivateUI(bUndoable);
// Скрыть объект, если он не является внешним внедренным объектом DWORD dwMisc = 0;
m_lpObject->GetMiscStatus(GetDrawAspect() , SdwMisc); if (dwMisc & OLEMISC_INSIDEOUT) DoVerb(OLEIVERB HIDE, NULL);
void CContDemoCntrltem::Serialize(CArchives ar) (
ASSERT_VALID(this);
// Вызывается базовый класс для чтения данных класса COleClientltem. // После возвращения функцией CContDemoCntrltem::GetDocument // указателя m_pDocument, вызовите функцию Serialize базового класса COleClientltem::Serialize(ar);
// сохраните/восстановите данные, определенные в CContDemoCntrltem
if (ar.IsStoring())
{
// TODO: здесь добавьте код сохранения
}
else
{
// TODO: здесь добавьте код загрузки
}
/ / / / / / т п 11 / / / / / / / / / / / ш /11111111 /111 / п 11 /1 / / / /11 / /11 / / i! i /1 / / / / /1 /
II Диагностика класса CCoritDemoCntrltem #ifdef _DEBUG
void CContDemoCntrltem::AssertValid() const {
COleClientltera::AssertValid();
}
void CContDemoCntrltem::Dump(CDumpContextS dc) const i
COleClientltem::Dump(dc);
}
ttendif
///////////////////////////////////////////77////////////////'//////////
Итоги
В этой главе мы рассмотрели механизм OLE 2 и использование его основных средств. Отметим главное.
• Механизм OLE 2 представляет широкий набор методов, объединяющих в программе данные из документов других программ, а также использующих их возможности.
• Сервер OLE — это программа, создающая, обслуживающая и редактирующая блоки данных OLE, называемые объектами или компонентами. Контейнер OLE — это программа, которая получает компонент OLE и встраивает его в свои документы.
• При внедрении (embedding) контейнер OLE хранит данные компонента как составную часть документа контейнера. При связывании (linking) OLE-сервер хранит данные OLE-компонента как часть документа сервера.
• Как при внедрении, так и при связывании, сервер и библиотеки OLE используются для отображения и редактирования данных. При внедрении документ может редактироваться в окне контейнера (редактирование на месте - in place) или в окне сервера (редактирование в режиме полного открытия — fully-open). При связывании документ редактируется только в окне сервера.
• Автоматизация (Automation) является механизмом OLE, который дает возможность программе клиента автоматизации использовать средства программы сервера автоматизации и управлять ими.
• Библиотека MFC и мастера Visual С++ позволяют создавать программы, используя средства внедрения, связывания и автоматизации OLE.
• Чтобы создать исходный код для сервера OLE, сгенерируйте программу с помощью мастера AppWizard и в его диалоговом окне (Step 3) выберите одну из опций: Full-server, Mini-server или Both container and server.
Предыдущая << 1 .. 154 155 156 157 158 159 < 160 > 161 162 163 164 165 166 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100