Обзор режима без пользовательского интерфейса
Создание UILessMode
Создание потока без пользовательского интерфейса: приложение может сделать поток меньшего пользовательского интерфейса iTfThreadMgrEx::ActivateEx с ITF_AE_UIELEMENTENABLEDONLY. При активации ThreadMgr с этим флагом активируются только типы, которые могут управлять его элементом пользовательского интерфейса, активируются в потоке. Приложение должно реализовать интерфейс ITfUIElementSink и сообщить интерфейсу диспетчеру потоков. ITfUIElementSink::BeginUIElement вызывается, когда подсказка отображает свой пользовательский интерфейс. Приложение может возвращать значение TRUE в параметре pbShow, чтобы разрешить подсказке отображать исходный пользовательский интерфейс TIP, если приложение не хочет нарисовать. Если приложение не разрешает пользовательский интерфейс TIP, он может возвращать FALSE в pbShow (см. схемы ниже). Приложение может нарисовать пользовательский интерфейс самостоятельно, получив некоторые сведения из парама pElement . Это может быть список кандидатов, элемент панели языка или пользовательский интерфейс подсказки. Приложение может знать тип пользовательского интерфейса с помощью интерфейса QIing ITfUIElement . При изменении пользовательского интерфейса вызывается ITfUIElementSink::UpdateUIElement. Приложение может сравнить GUID из pElement-GetGUID>(), чтобы узнать, рисуется ли элемент в настоящее время приложением.
Создание подсказки с поддержкой пользовательского интерфейса: совет должен поддерживать менее режим пользовательского интерфейса, если он хочет запуститься под приложением, которое не хочет разрешить пользовательский интерфейс подсказки, например игровое приложение или полноэкранные приложения. Чтобы пользовательский интерфейс был менее осведомлен, совет должен реализовать интерфейс ITfTextInputProcessorEx. Если этот интерфейс не реализован, подсказка не будет активирована в потоке меньшего режима пользовательского интерфейса. Кроме того, совет должен вызвать ITFUIElementMgr::BeginUIElement, прежде чем он отображает видимый пользовательский интерфейс на экране. Этот метод вызывает ITfUIElementSink , чтобы уведомить приложение. И приложение решит, может ли оно отображаться или нет. При вызове Tip BeginUIElement(), совет должен иметь интерфейс ITfUIElement для соответствующего пользовательского интерфейса. Приложение QI будет получать другой пользовательский интерфейс для получения дополнительных сведений для рисования пользовательского интерфейса. Системные предопределения ITfCandidateListUIElement и ITfReadingInformationUIElement для TIP. Если совет хочет отобразить список кандидатов в потоке меньшего режима пользовательского интерфейса, совет должен создать экземпляр интерфейса ITfCandidateListUIElement и вызвать ITFUIElementMgr::BeginUIElement. При вызове ITfTextInputProcessorEx::ActivateEx совет уже знает, что поток меньше пользовательского интерфейса, поэтому он может исключить дополнительный пользовательский интерфейс. Однако, конечно, он может реализовать свой собственный интерфейс, который может быть QIed из и попытаться сделать уведомление. Таким образом, совет и вызов ITfUIElementappliмогут иметь согласование пользовательского пользовательского интерфейса TIP.
Совет по поддержке UIElement
Совет, поддерживающий UIElement, должен быть классифицирован по GUID_TFCAT_TIPCAP_UIELEMENTENABLED. Совет в GUID_TFCAT_TIPCAP_UIELEMENTENABLED должен использовать ITfUIElementMgr для отображения любого пользовательского интерфейса, чтобы приложение пользовалось видимостью пользовательского интерфейса.
Отображение и скрытие состояния UIElement: отображение и скрытие состояния, указанное методом ITfUIElement::Show или ITfUIElement::IsShown, является фактическим видимым состоянием. Она не связана с доступностью UIElement. UIElement всегда должен быть доступен при наличии состояния отображения. Состояние отображения можно контролировать из приложения. Приложение может внезапно перейти в режим без пользовательского интерфейса и начать рисование пользовательского интерфейса самостоятельно, вызвав ITfUIElement::Show with FALSE , чтобы скрыть весь пользовательский интерфейс подсказки. Затем совет может принять один из некоторых вариантов. 1) СОВЕТ может переместить UIElement в состояние "Скрыть" и начать создание UpdateUIElement. 2) СОВЕТ может завершить UIElement, так как элемент пользовательского интерфейса не поддерживает скрытие состояния и совет вызывает EndUIElement() для его завершения.
Стандартные элементы пользовательского интерфейса
Список кандидатов: список кандидатов является одним из основных элементов пользовательского интерфейса для входных данных EA. Этот элемент пользовательского интерфейса предоставляет список кандидатов и соответствующее количество строк кандидатов для рисования.
Окно сведений о чтении— окно сведений о чтении обычно используется для ввода с клавиатуры на китайском языке. Он имеет этап, который не может быть вставлен в документ в качестве строки композиции. Некоторый китайский обработчик ввода открывает небольшое окно сведений о чтении, фонетической или вводяющей информации.
Блок-диаграмма пользовательского интерфейса UILessMode
После получения подсказки true в *pbShown от ITfUIElementMgr::BeginUIElement совет не должен вызывать UpdateUIElement для UIElement. Но совет должен вызвать EndUIElement(), чтобы ITfUIElementMgr и приложение может отслеживать состояние UIElement. Совет должен вызывать UpdateUIElement() после того, как BeginUIElement() возвращает FALSE в *pbShow. Приложение, которое хочет нарисовать пользовательский интерфейс, не проверяет содержимое в BeginUIElement(), оно просто возвращает состояние отображения в BeginUIElement() и начинает проверять содержимое в UpdateUIElement(). Например, флаг обновления списка кандидатов UIElement имеет все биты при первом обновлении UpdateUIElement(). Это означает, что содержимое UIElement не должно быть готово в BeginUIElement().
Список кандидатов UIElement
О PageIndex: приложение, которое рисует список кандидатов, вычисляет количество строк на страницу при изменении содержимого списка (TF_CLUIE_STRING задано). Изменить индекс страницы не рекомендуется, пока список кандидатов доступен для режима без пользовательского интерфейса. Это означает, что список кандидатов TIP должен вести себя по страницам, а не прокручиваться при перемещении выделения на следующую страницу. Если прокрутка происходит при перемещении выделения, индекс страницы изменяется, а приложение должно пересчитывать индекс страницы. Результат может не ожидаться советом.
Нет выбора: ITfCandidateListUIElement::GetSelection возвращает S_FALSE, если список кандидатов не имеет выбора. Возвращаемое значение первого парама недопустимо.