Обзор режима без пользовательского интерфейса

Как создать UILessMode

Создание потока без пользовательского интерфейса. Приложение может создать пользовательский интерфейс Less Thread с помощью ITfThreadMgrEx::ActivateEx с ITF_AE_UIELEMENTENABLEDONLY. При активации ThreadMgr с помощью этого флага в потоке активируются только tiP, которые могут управлять его элементом пользовательского интерфейса. Приложению необходимо реализовать интерфейс ITfUIElementSink и рекомендовать интерфейс в диспетчере потоков. ITfUIElementSink::BeginUIElement вызывается, когда TIP отображает свой пользовательский интерфейс. Приложение может возвращать значение TRUE в параметре pbShow, чтобы разрешить tip отображать исходный пользовательский интерфейс TIP, если приложение не хочет рисовать. Если приложение не разрешает пользовательский интерфейс TIP, оно может возвращать значение FALSE в pbShow (см. схемы ниже). Приложение может рисовать пользовательский интерфейс самостоятельно, получая некоторые сведения из параметра pElement . Это может быть список кандидатов, элемент языковой панели или пользовательский интерфейс TIP. Приложение может узнать тип пользовательского интерфейса с помощью интерфейса QIing ITfUIElement . При изменении пользовательского интерфейса вызывается ITfUIElementSink::UpdateUIElement . Приложение может сравнить GUID из pElement-GetGUID>(), чтобы узнать, рисуется ли элемент приложением в данный момент.

Совет по обеспечению поддержки пользовательского интерфейса без поддержки: Совет должен поддерживать режим меньшего пользовательского интерфейса, если он хочет выполняться в приложении, которое не хочет разрешать пользовательский интерфейс TIP, например игровое приложение или полноэкранные приложения. Чтобы пользовательский интерфейс был менее осведомлен, TIP необходимо реализовать интерфейс ITfTextInputProcessorEx . Если этот интерфейс не реализован, TIP не будет активирован в потоке режима меньшего пользовательского интерфейса. Кроме того, tip должен вызвать ITFUIElementMgr::BeginUIElement перед отображением видимого пользовательского интерфейса на экране. Этот метод вызывает ITfUIElementSink для уведомления приложения. И приложение решит, можно ли его показать. Когда TIP вызывает BeginUIElement(), tip должен иметь интерфейс ITfUIElement для соответствующего пользовательского интерфейса. Приложение будет использовать интерфейс QI, чтобы получить другой интерфейс для конкретного пользовательского интерфейса, чтобы получить дополнительные сведения для рисования пользовательского интерфейса. Системные предопределения ITfCandidateListUIElement и ITfReadingInformationUIElement для TIP. Если TIP хочет отобразить список кандидатов в потоке меньшего режима пользовательского интерфейса, tip должна создать экземпляр интерфейса ITfCandidateListUIElement и вызвать ITFUIElementMgr::BeginUIElement. При вызове метода ITfTextInputProcessorEx::ActivateEx совет уже знает, что поток является пользовательским интерфейсом меньше, поэтому он может исключить дополнительный пользовательский интерфейс. Однако, конечно, он может реализовать свой собственный интерфейс, который можно qIed из и попытаться сделать уведомление. Таким образом, tip и appliITfUIElementcation могут иметь согласование для пользовательского пользовательского интерфейса TIP.

Подсказка с поддержкой UIElement

Подсказка, поддерживающая UIElement, должна быть классифицирована по GUID_TFCAT_TIPCAP_UIELEMENTENABLED. Подсказка в GUID_TFCAT_TIPCAP_UIELEMENTENABLED должна использовать ITfUIElementMgr для отображения любого пользовательского интерфейса, чтобы приложение пользовалось видимостью пользовательского интерфейса.

Показать или скрыть состояние UIElement: Состояние Show/Hide, указываемое методом ITfUIElement::Show или ITfUIElement::IsShown , является фактическим видимым состоянием. Это не связано с доступностью UIElement. UiElement должен быть всегда доступен при наличии состояния отображения. Состояние отображения контролируется из приложения. Приложение может внезапно перейти в режим без пользовательского интерфейса и начать рисование пользовательского интерфейса самостоятельно, вызвав метод ITfUIElement::Show с false , чтобы скрыть весь пользовательский интерфейс TIP. Затем TIP может принимать один из некоторых вариантов. 1) TIP может переместить UIElement в состояние Скрыть и начать создание UpdateUIElement. 2) TIP может завершить UIElement, так как элемент пользовательского интерфейса не поддерживает состояние Hide, а tip вызывает EndUIElement() для его завершения.

Предопределенные элементы пользовательского интерфейса

Список кандидатов: Список кандидатов является одним из основных элементов пользовательского интерфейса для входных данных EA. Этот элемент пользовательского интерфейса предоставляет список кандидатов и соответствующее количество строк-кандидатов для рисования.

Окно сведений о чтении Окно сведений для чтения часто используется для ввода с клавиатуры на китайском языке. Он содержит этап, который не может быть вставлен в документ в качестве строки композиции. Некоторые китайские процессоры ввода открывают небольшое окно сведений о чтении, в которое отображаются сведения о чтении, фонетическом вводе или вводе.

Блок-схема uiLessMode

Схема, на которую показана блок-схема U I LessMode.

После того как tip получит значение TRUE в *pbShown by ITfUIElementMgr::BeginUIElement, tip не должен вызывать UpdateUIElement для UIElement. Но TIP необходимо вызвать EndUIElement(), чтобы ITfUIElementMgr и приложение могли отслеживать состояние UIElement. TIP должен вызывать UpdateUIElement() после того, как BeginUIElement() возвращает ЗНАЧЕНИЕ FALSE в *pbShow. Приложение, которое хочет нарисовать пользовательский интерфейс, не проверка содержимое в BeginUIElement(), оно просто возвращает состояние отображения в BeginUIElement() и начинает проверку содержимого в UpdateUIElement(). Например, флаг обновления списка кандидатов UIElement содержит все биты в первом элементе UpdateUIElement(). Это означает, что содержимое UIElement не обязательно должно быть готово в BeginUIElement().

Схема, показывающая, когда T I P вызывает ITUIElementMgr::BeginUIElement()и BeginUIElement of Application's UIElementSink.Схема, показывающая, что приложение возвращает значение FALSE в *pbShow.блок-схема uilessmode

Элемент UIElement списка кандидатов

Сведения о PageIndex: Приложение, которое рисует список кандидатов, вычисляет количество строк на странице при изменении содержимого списка (TF_CLUIE_STRING задано). Не рекомендуется изменять индекс страницы, пока список кандидатов доступен для режима без пользовательского интерфейса. Это означает, что список кандидатов TIP должен вести себя подкачки, а не прокрутка при перемещении выделения на следующую страницу. Если прокрутка происходит при перемещении выделения, индекс страницы изменяется, и приложению необходимо пересчитать индекс страницы. Результат может не ожидаться с помощью TIP.

No Selection:ITfCandidateListUIElement::GetSelection возвращает S_FALSE, если список кандидатов не имеет выделения. Возвращаемое значение первого параметра недопустимо.