嵌入对象(文本服务框架)
文本服务框架使文本服务能够在应用程序文本流中嵌入对象。 嵌入的对象使用值 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::GetText 或 ITextStoreAnchor::GetText 时,获取的文本中包含嵌入对象,则 TS_CHAR_EMBEDDED 值指示嵌入对象的存在和位置。 若要获取嵌入对象,请使用嵌入对象的字符位置调用 ITextStoreACP::GetEmbedded,或使用嵌入对象的定位点位置 ITextStoreAnchor::GetEmbedded。
应用程序通常无法识别嵌入的对象内容。 应用程序可以尝试从对象本身获取显示信息。 如果嵌入对象可以采用应用程序识别的格式(如CF_UNICODETEXT或CF_BITMAP)提供数据,则应用程序可以显示对象提供的图形信息。
插入嵌入对象
文本服务通过调用 ITfRange::InsertEmbedded 或 ITfInsertAtSelection::InsertEmbeddedAtSelection将嵌入对象插入上下文中。 文本服务必须提供嵌入的 IDataObject。