Поделиться через


Внедренные объекты (платформа текстовых служб)

Text Services Framework позволяет службе текста внедрять объекты в текстовый поток приложения. Внедренные объекты вставляются в текстовый поток, используя значение TS_CHAR_EMBEDDED. Это значение разрешается в символ замены объекта Юникода U+fffc с использованием шестнадцатеричной нотации. Например, на следующем рисунке показана отрисовка внедренного объекта, представляющего японский ideograph hi, в сочетании с последовательностью символов Юникода, представляющих английский перевод "Sun".

кодировка символов внедренного объекта

В верхней строке рисунка содержится переведенный текст, состоящий из слова "Sun", за которым следует японский символ для sun, hi. В центральной строке рисунка отображается символ Юникода. В случае с U+fffc это символ замены объекта. В нижней строке рисунка показано шестнадцатеричное значение каждого символа.

Поддержка внедренных объектов в приложении

Диспетчер TSF вставляет внедренный объект в текстовый поток, вызывая метод ITextStoreACP::InsertEmbedded для приложения на основе ACP или 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.