剪贴板:复制和粘贴数据
本主题介绍在 OLE 应用程序中实现从剪贴板复制和粘贴所需的最低工作。 建议先阅读数据对象和数据源 (OLE) 主题,然后再继续操作。
在实现复制或粘贴之前,必须先提供函数来处理“编辑”菜单上的“复制”、“剪切”和“粘贴”选项。
复制或剪切数据
将数据复制到剪贴板
确定要复制的数据是本机数据还是嵌入项或链接项。
如果数据嵌入或链接,请获取指向所选
COleClientItem
对象的指针。如果数据是本机数据,并且应用程序是服务器,请创建派生自
COleServerItem
(包含所选数据)的新对象。 否则,请为数据创建一个COleDataSource
对象。
调用所选项的
CopyToClipboard
成员函数。如果用户选择了“剪切”操作而不是“复制”操作,请从应用程序中删除所选数据。
若要查看此序列的示例,请参阅 MFC OLE 示例程序 OCLIENT 和 HIERSVR 中的 OnEditCut
和 OnEditCopy
函数。 请注意,这些示例保留指向当前所选数据的指针,因此步骤 1 已经完成。
正在粘贴数据
粘贴数据比复制数据要复杂得多,因为需要选择将数据粘贴到应用程序中的格式。
从剪贴板检索数据
在视图类中,实现
OnEditPaste
以处理从“编辑”菜单中选择“粘贴”选项的用户。在
OnEditPaste
函数中,创建一个COleDataObject
对象并调用其AttachClipboard
成员函数,以将此对象链接到剪贴板上的数据。调用
COleDataObject::IsDataAvailable
以检查特定格式是否可用。或者,可以使用
COleDataObject::BeginEnumFormats
查找其他格式,直到找到最适合应用程序的格式。执行格式的粘贴。
有关工作原理的示例,请参阅 MFC OLE 示例程序 OCLIENT 和 HIERSVR 中定义的视图类中的 OnEditPaste
成员函数的实现。
提示
将粘贴操作分离到其自己的函数的主要好处是,在拖放操作期间在应用程序中删除数据时,可以使用相同的粘贴代码。 与 OCLIENT 和 HIERSVR 中一样,函数 OnDrop
还可以调用 DoPasteItem
、重用写入以实现粘贴操作的代码。
若要处理“编辑”菜单上的“选择性粘贴”选项,请参阅主题 OLE 中的对话框。