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

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

嵌入对象的 字符编码

该图的上一行包含翻译的文本,由单词“Sun”组成,后跟日文字符的太阳,hi。 该图的中心行显示 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。