Образец OCLIENT: демонстрация приложения контейнера визуального редактирования

Обновлен: Ноябрь 2007

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

c2f86tzd.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

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

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение и запуск образца OCLIENT

  1. Откройте решение OCLIENT.sln.

  2. В меню Построение выберите команду Построить.

  3. Откройте и запустите приложение OCLIENT.

В OCLIENT показаны следующие возможности:

  • перетаскивание объектов в другое приложение и из другого приложения;

  • клонирование (дублирование) объектов путем перетаскивания при нажатой клавише CTRL в пределах одного окна приложения;

  • автоматическая прокрутка окна в ходе операции перетаскивания;

  • вставка объекта в собственном формате;

  • вставка ссылки.

Образец OCLIENT, подобно образцу CONTAINER, является простой программой для рисования объектов. Единственный тип объектов, которые он может рисовать, это связанный или внедренный элемент OLE.

Добавление нового объекта в рисунок OCLIENT

  1. Выберите команду Insert New Object в меню Edit.

    Откроется диалоговое окно Insert New Object.

  2. Выберите тип добавляемого элемента OLE.

    В окне OCLIENT появится новый объект, а в меню и в панели инструментов OCLIENT появятся всплывающие меню и кнопки, предоставленные серверным приложением.

-или-

  1. Во время работы сервера автоматизации скопируйте элемент OLE в буфер обмена.

  2. В меню Edit приложения OCLIENT выберите команду Paste, чтобы внедрить элемент OLE, или команду Paste Link, чтобы связать элемент OLE.

Добавленный элемент OLE всегда располагается в левом верхнем углу рисунка OCLIENT. Новый элемент OLE может частично или полностью закрывать старый элемент. Мышью можно выбрать только один элемент OLE. Выбранный связанный элемент выделяется пунктирным прямоугольником, а внедренный элемент — сплошным прямоугольником. Элемент OLE можно перемешать путем перетаскивания, а размер выбранного элемента OLE можно изменять с помощью маркеров изменения размера.

Чтобы удалить элемент OLE, выделите его щелчком мыши, а затем нажмите клавишу DELETE или выберите команду Clear из меню Edit.

Чтобы изменить содержимое элемента OLE, дважды щелкните его или выделите его мышью, а затем выберите команду Edit <type> Object из меню Edit. Чтобы завершить редактирование элемента, которое запущено по месту его расположения, щелкните в окне OCLIENT за пределами прямоугольника элемента. Чтобы завершить редактирование элемента, который был полностью открыт в серверном приложении, используйте команду сервера File Update.

Ключевые слова

В этом образце показаны следующие ключевые слова:

AfxGetMainWnd; AfxMessageBox; AfxOleInit; AfxThrowArchiveException; AfxThrowFileException; AfxThrowMemoryException; CArchive::Close; CArchive::IsStoring; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CControlBar::EnableDocking; CDC::DPtoLP; CDC::DrawFocusRect; CDC::GetDeviceCaps; CDC::HIMETRICtoDP; CDC::LPtoDP; CDC::RealizePalette; CDC::SelectPalette; CDocTemplate::SetContainerInfo; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CGdiObject::UnrealizeObject; CMDIChildWnd::Create; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleClientItem::Close; COleClientItem::CreateCloneFrom; COleClientItem::Deactivate; COleClientItem::Delete; COleClientItem::DoDragDrop; COleClientItem::DoVerb; COleClientItem::Draw; COleClientItem::GetActiveView; COleClientItem::GetClipboardData; COleClientItem::GetDocument; COleClientItem::GetDrawAspect; COleClientItem::GetInPlaceWindow; COleClientItem::GetItemState; COleClientItem::GetType; COleClientItem::IsInPlaceActive; COleClientItem::OnActivate; COleClientItem::OnChange; COleClientItem::OnChangeItemPosition; COleClientItem::OnDeactivateUI; COleClientItem::OnGetClipboardData; COleClientItem::OnGetItemPosition; COleClientItem::SetDrawAspect; COleClientItem::SetItemRects; COleClientItem::UpdateLink; COleDataObject::Attach; COleDataObject::AttachClipboard; COleDataObject::IsDataAvailable; COleDataSource::CacheGlobalData; COleDocument::EnableCompoundFile; COleDocument::GetNextItem; COleDocument::GetStartPosition; COleDocument::HasBlankItems; COleDocument::OnShowViews; COleInsertDialog::CreateItem; COleInsertDialog::DoModal; COleInsertDialog::GetSelectionType; COlePasteSpecialDialog::AddFormat; COlePasteSpecialDialog::AddStandardFormats; COlePasteSpecialDialog::CreateItem; COlePasteSpecialDialog::DoModal; COlePasteSpecialDialog::GetSelectionType; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; COleUpdateDialog::DoModal; CPalette::CreateHalftonePalette; CRect::InflateRect; CRect::IntersectRect; CRect::IsRectEmpty; CRect::OffsetRect; CRect::Size; CRect::TopLeft; CRectTracker::Draw; CRectTracker::HitTest; CRectTracker::SetCursor; CRectTracker::Track; CScrollView::GetDeviceScrollPosition; CScrollView::SetScrollSizes; CStatusBar::Create; CStatusBar::SetIndicators; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::DoPreparePrinting; CView::GetDocument; CView::IsSelected; CView::OnDragEnter; CView::OnDragLeave; CView::OnDragOver; CView::OnDraw; CView::OnDrop; CView::OnInitialUpdate; CView::OnPrepareDC; CView::OnPreparePrinting; CView::OnScrollBy; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWinApp::RunEmbedded; CWnd::ClientToScreen; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetParentFrame; CWnd::InvalidateRect; CWnd::OnChar; CWnd::OnCreate; CWnd::OnDestroy; CWnd::OnLButtonDblClk; CWnd::OnLButtonDown; CWnd::OnPaletteChanged; CWnd::OnQueryNewPalette; CWnd::OnRButtonDown; CWnd::OnSetCursor; CWnd::OnSetFocus; CWnd::OnSize; CWnd::ReleaseDC; CWnd::SetFocus; CWnd::ShowWindow; CWnd::UpdateWindow; CreateHatchBrush; DeleteItem; DragAcceptFiles; FORMATETC; FillRect; GetDeviceCaps; GetKeyState; GetSysColor; GlobalFree; GlobalLock; GlobalUnlock; LPtoDP; MessageBeep; MulDiv; RGB; RectVisible; RegisterClipboardFormat; ReleaseStgMedium; STGMEDIUM; SelectPalette; SetBkColor; SetBrushOrg; SetMapMode; SetRect; SetTextColor; SetViewportExt; SetWindowExt; abs; afxMemDF; max; memset; min

c2f86tzd.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Примеры MFC