此主题描述实现复制到和粘贴来自在 OLE 应用程序的剪贴板的必需的最小工作量。 建议您在执行之前读取 数据对象与数据源 (OLE) 主题。
在实现复制或粘贴之前,必须先"编辑"菜单上提供函数处理复制,剪切、粘贴和选项。
复制或剪切数据
将数据复制到剪贴板
确定复制的数据是否为本机数据或是嵌套的或链接的项。
如果数据事被嵌入或链接的,请获取一个指向选定的 COleClientItem 对象的指针。
如果数据是本地的并且应用程序时一个服务器,则创建一个新的对象从 COleServerItem 继承获取选定的数据。 否则,创建数据的一个 COleDataSource 对象。
调用选定项的 CopyToClipboard 成员函数。
如果用户选择剪切操作而不是复制操作,请删除应用程序选定的数据。
若要查看此序列的示例,请参阅示例程序 OCLIENT 在 MFC OLE 和 HIERSVR的 OnEditCut 和 OnEditCopy 函数。 请注意这些示例维护一个指向当前选择的数据的指针,因此步骤 1 已完成。
传递数据
粘贴数据比复制它更复杂,因为在将需要选择格式传递数据到应用程序。
从剪贴板中粘贴数据。
在视图类中,请实现 OnEditPaste 处理选择粘贴选项的用户从"编辑"菜单。
在 OnEditPaste 函数中,创建 COleDataObject 对象并调用它的 AttachClipboard 成员函数连接此对象到剪贴板的数据。
调用 COleDataObject::IsDataAvailable 检查特定格式是否可用。
或者,可以使用 COleDataObject::BeginEnumFormats 查找其他格式,直到找到最适合应用程序。
执行格式的粘贴。
有关如何工作的示例,请参阅在 MFC OLE 示例程序定义的视图类的 OnEditPaste 成员函数的实现和 OCLIENT HIERSVR。
提示
在自身的函数中分隔粘贴操作的主要好处是可以使用同一粘贴代码,当在拖放操作期间数据被拖放到应用程序。在 OCLIENT 和 HIERSVR,OnDrop 函数也可以调用 DoPasteItem,重用代码写入实现粘贴操作。
若要处理"编辑"菜单的粘贴特殊选择,请参阅主题 在 OLE 的对话框。