使用文本墨迹对象
为了帮助在应用程序中支持墨迹,有两个对象,这两个对象都可以嵌入并由任何 OLE 容器支持:文本墨迹对象 (tInk) 和草图墨迹对象 (sInk) 。
文本墨迹对象是一个 OLE 对象,表示应形成单词的墨迹。 文本墨迹对象使手写墨迹能够通过从备用列表中进行选择来转换为文本。 文本墨迹对象的颜色和大小可以通过编程方式设置,并且可以基于对象周围的文本属性。 文本墨迹对象旨在包含单个单词。
文本墨迹对象支持嵌入和剪贴板支持所需的标准 OLE 接口集。 IPersistStream 接口以墨迹序列化格式 (ISF) 读取和写入流。 文本墨迹对象提供 IInkLineInfo 接口来访问其显示属性和识别结果列表。
文本墨迹对象可以通过将其放置在剪贴板上的 OLE 对象槽中、将其嵌入 RTF 或将其持久保存在 ISF 流中来实现应用程序之间的互操作性。
可以通过以下方式生成文本墨迹对象。
- InkEdit 控件使用文本墨迹对象。 InkEdit 控件的功能是标准 RichEdit 控件功能的超级集。 墨迹作为文本墨迹对象插入到 InkEdit 控件的 RTF 流中。
- 当应用程序将 InkStrokes 或 InkEdit 对象复制到剪贴板并设置 InkClipboardFormats 枚举 格式时,OLE 对象剪贴板槽包含文本墨迹 OLE 对象。
- 平板电脑输入面板可以生成文本墨迹对象。
例如,应用程序可以识别手写并将识别结果添加到笔划。 然后,如果将笔划作为文本墨迹对象复制并粘贴到 Microsoft Word,Word 2003 及更高版本中提供了该单词的替换。
为了成功包含文本墨迹对象,应用程序必须实现对嵌入对象的 OLE 容器支持。 然后,若要使容器完全支持文本墨迹,必须建立:
- 修改查找和替换应用程序。 必须查询这些对象的类型,而不是在搜索中跳过嵌入的对象。 如果它们是文本墨迹对象,则必须对其进行实例化并查询相应的文本。
- 对选择行为的修改。 文本墨迹对象的选择不应与大小控点一起显示。 选择它们的方式应与在文档中选择文本的方式相同。 对象的选择代码必须检测类型是否为文本墨迹,并相应地显示所选内容。
- 使用环境属性。 需要将字体大小、颜色和粗体格式等环境属性传输到文本墨迹对象。 应用这些属性会更改手写墨迹的宽度,因此需要通过调用 IInkLineInfo::GetInkExtent 或 IOleObject::GetExtent 方法更新大小。
本节内容