文本服务框架) (嵌入对象

文本服务框架使文本服务能够在应用程序文本流中嵌入对象。 嵌入对象使用 值TS_CHAR_EMBEDDED插入到文本流中。 此值使用十六进制表示法解析为 Unicode 对象替换字符 U+fffc。 例如,下图显示了表示日语象形字 hi 的嵌入对象的呈现,以及表示“Sun”英文翻译的 Unicode 字符序列。

嵌入对象的字符编码

图的上一行包含翻译的文本,包括单词“Sun”,后跟日文字符太阳, 你好。 图的中心行显示 Unicode 字符。 对于 U+fffc,这是对象替换字符。 图的底部行显示每个字符的十六进制值。

支持应用程序中的嵌入对象

TSF 管理器通过调用基于 ACP 的应用程序的 ITextStoreACP::InsertEmbedded 或基于定位点的应用程序调用 ITextStoreAnchor::InsertEmbedded ,将嵌入对象插入文本流中。 插入嵌入对象时,应用程序应将 TS_CHAR_EMBEDDED 值放置在嵌入对象的字符位置 (或定位点位置) ,并存储与嵌入对象关联的 IDataObject。 调用 ITextStoreACP::GetTextITextStoreAnchor::GetText 时,嵌入对象包含在获取的文本中时, TS_CHAR_EMBEDDED 值指示嵌入对象的存在和位置。 若要获取嵌入对象,请使用嵌入对象的字符位置调用 ITextStoreACP::GetEmbedded ,或使用嵌入对象的定位点位置调用 ITextStoreAnchor::GetEmbedded

应用程序通常无法识别嵌入的对象内容。 应用程序可以尝试从对象本身获取显示信息。 如果嵌入对象可以以应用程序可识别的格式(例如CF_UNICODETEXT或CF_BITMAP)提供数据,则应用程序可以显示对象提供的图形信息。

插入嵌入对象

文本服务通过调用 ITfRange::InsertEmbeddedITfInsertAtSelection::InsertEmbeddedAtSelection 将嵌入对象插入上下文中。 文本服务必须提供嵌入的 IDataObject。