IInkDisp::ClipboardCopyWithRectangle 方法 (msinkaut.h)

将已知矩形中包含的 IInkStrokeDisp 对象复制到剪贴板。

语法

HRESULT ClipboardCopyWithRectangle(
  [in]           IInkRectangle       *Rectangle,
  [in, optional] InkClipboardFormats ClipboardFormats,
  [in, optional] InkClipboardModes   ClipboardModes,
  [out, retval]  IDataObject         **DataObject
);

parameters

[in] Rectangle

指定包含要复制到剪贴板的笔划的矩形。

[in, optional] ClipboardFormats

可选。 指定 InkDisp 对象的 InkClipboardFormats 枚举值。 默认值为 ICF_Default

[in, optional] ClipboardModes

可选。 指定 InkDisp 类对象的 InkClipboardModes 枚举值。 默认值为 ICB_Default

[out, retval] DataObject

此方法返回时,包含指向新创建的数据对象的指针。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK
成功。
E_POINTER
参数包含无效的指针。
E_INK_EXCEPTION
方法内发生异常。

注解

如果矩形剪裁笔划,则会在复制的数据中剪裁这些笔画。

当您只想复制 InkDisp 对象的属性时,将 InkDisp 对象复制到剪贴板可能很有用。 若要将 InkDisp 对象复制到剪贴板,请调用将 strokes 参数设置为 NULLClipboardCopy 方法。

谨慎 若要避免因使用 ICB_DelayedCopy 标志而导致的潜在内存泄漏,必须调用 OleFlushClipboardOleSetClipboard 方法。 如果对 ClipboardCopyWithRectangle 方法的最后一次调用使用了 ICB_DelayedCopy 标志,则必须在应用程序退出之前完成此操作。
 
ICB_Cut模式下使用 ClipboardCopyWithRectangle 时,将删除拆分为两个或多个笔划的笔划,并在其位置添加新笔划。

此外, InkAddedInkDeleted 事件是基于笔划的索引生成的。 例如,如果要删除索引 0、1、3、5 和 6 处的笔划,则将生成两个事件:一个用于索引为 0123 的笔划,一个用于索引为 5 和 6 的笔划。 也就是说,每个连续集都有一个事件。

这也适用于 InkAdded 事件。 内部算法确定笔划集合中新添加的笔划的索引,这会影响如上文所述 激发 InkAdded 事件的方式。

如果在事件处理程序中查询笔划计数,则结果是整个操作添加的笔划总数,包括尚未生成事件的笔划。

要求

   
最低受支持的客户端 Windows XP Tablet PC Edition [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 msinkaut.h
Library InkObj.dll

另请参阅

ClipboardCopy 方法

IInkDisp

InkClipboardFormats 枚举

InkClipboardModes 枚举

InkDisp 类

InkStrokes 集合