OCLIENT 示例:阐释可视编辑容器应用程序

更新:2007 年 11 月

OCLIENT 示例是可视化编辑容器应用程序的示例。它实质上是 CONTAINER 示例的扩展版本,尽管它不是严格从 CONTAINER 派生的。

安全说明:

提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。

获取示例和安装示例的说明:

  • 在 Visual Studio 的“帮助”菜单上,单击“示例”。

    有关更多信息,请参见定位示例文件

  • 示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。

  • 还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。

生成并运行示例

生成并运行 OCLIENT 示例

  1. 打开解决方案 OCLIENT.sln。

  2. 在“生成”菜单中单击“生成”。

  3. 打开并运行 OCLIENT 应用程序。

OCLIENT 阐释以下这些功能:

  • 在应用程序间拖放。

  • 在同一应用程序窗口中通过使用“Ctrl-拖动”来克隆(复制)对象。

  • 拖放操作期间窗口的自动滚动。

  • 本机格式对象的编辑粘贴。

  • 编辑粘贴链接。

OCLIENT(就像 CONTAINER)是简单对象绘图程序。它绘制的唯一对象类型是链接的或嵌入的 OLE 项。

向 OCLIENT 绘图添加新对象

  1. 单击“Edit”(编辑)菜单上的“Insert New Object”(插入新对象)。

    出现“Insert New Object”(插入新对象)对话框。

  2. 选择要添加的 OLE 项的类型。

    在 OCLIENT 的窗口中将出现一个新对象,同时 OCLIENT 的菜单和工具栏将使用服务器应用程序所提供的弹出菜单和工具栏按钮进行更新。

- 或 -

  1. 当运行“Automation”(自动化)服务器时,将 OLE 项复制到剪贴板。

  2. 在 OCLIENT 中的“Edit”(编辑)菜单上,单击“Paste”(粘贴)以嵌入该 OLE 项,或者单击“Paste Link”(粘贴链接)以链接该 OLE 项。

新添加的 OLE 项始终放置在 OCLIENT 绘图的左上角。新的 OLE 项可以部分或完全覆盖较旧的项。可以使用鼠标一次选择一个 OLE 项。选定的链接项由虚线矩形指示,嵌入项由实线矩形指示。可以通过拖动 OLE 项来移动它;可以通过使用调整大小手柄来调整选定 OLE 项的大小。

若要删除 OLE 项,请单击鼠标以选中它,然后按 Delete 键或使用“Edit”(编辑)菜单上的“Clear”(清除)命令。

若要编辑 OLE 项的内容,双击它或用鼠标选择它,然后单击“Edit”(编辑)菜单上的“Edit <type> Object”(编辑 <type> 对象)。若要完成就地编辑项的编辑,在 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

说明:

某些示例(如此示例)尚未经过修改以反映 Visual C++ 向导、库和编译器中所做的更改,但仍演示了如何完成所需的任务。

请参见

其他资源

MFC 示例