埋め込みオブジェクト (Text Services Framework)
Text Services Framework を使用すると、テキスト サービスはアプリケーション テキスト ストリームにオブジェクトを埋め込むことができます。 埋め込みオブジェクトは、TS_CHAR_EMBEDDED値を使用してテキスト ストリームに挿入されます。 この値は、16 進表記を使用して Unicode オブジェクト置換文字 U+fffc に解決されます。 たとえば、次の図は、日本語のイデオグラフ hiを表す埋め込みオブジェクトのレンダリングを、"Sun" の英語翻訳を表す Unicode 文字のシーケンスと組み合わせて示しています。
埋め込みオブジェクトする
図の一番上の行には、翻訳されたテキストが含まれています。"Sun" という単語の後に太陽の日本語文字が続き、こんにちは。 図の中央の行は Unicode 文字を示しています。 U+fffc の場合、これはオブジェクト置換文字です。 図の下の行は、各文字の 16 進数の値を示しています。
アプリケーションでの埋め込みオブジェクトのサポート
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 を提供する必要があります。