다음을 통해 공유


UILess 모드 개요

UILessMode를 만드는 방법

UI가 없는 스레드 만들기: 애플리케이션은 ITF_AE_UIELEMENTENABLEDONLY 사용하여 ITfThreadMgrEx::ActivateEx에 의해 UI를 덜 스레드로 만들 수 있습니다. ThreadMgr이 이 플래그를 사용하여 활성화되면 해당 UI 요소를 제어할 수 있는 TIP만 스레드에서 활성화됩니다. 애플리케이션은 ITfUIElementSink 인터페이스를 구현하고 인터페이스를 스레드 관리자에 조언해야 합니다. ITfUIElementSink::BeginUIElement 는 TIP에서 해당 UI를 표시할 때 호출됩니다. 애플리케이션이 그리기를 원하지 않을 때 TIP에서 TIP의 원래 UI를 표시할 수 있도록 애플리케이션은 pbShow 매개 변수에서 TRUE를 반환할 수 있습니다. 애플리케이션에서 TIP의 UI를 허용하지 않는 경우 pbShow에서 FALSE를 반환할 수 있습니다(아래 다이어그램 참조). 애플리케이션은 pElement 매개 변수에서 일부 정보를 가져오면 UI를 단독으로 그릴 수 있습니다. 후보 목록, 언어 모음 항목 또는 TIP의 사용자 지정 UI일 수 있습니다. 애플리케이션은 QIing ITfUIElement 인터페이스를 통해 UI 종류를 알 수 있습니다. UI가 변경 되면 ITfUIElementSink::UpdateUIElement 가 호출됩니다. 애플리케이션은 pElement-GetGUID>()의 GUID를 비교하여 요소가 현재 애플리케이션에 의해 그려지는지 알 수 있습니다.

UI가 없는 인식 팁 만들기: TIP은 게임 애플리케이션 또는 전체 화면 애플리케이션과 같은 TIP의 UI를 허용하지 않으려는 애플리케이션에서 실행하려는 경우 UI 덜 모드를 지원해야 합니다. UI를 덜 인식하려면 TIP에서 ITfTextInputProcessorEx 인터페이스를 구현해야 합니다. 이 인터페이스가 구현되지 않으면 TIP는 UI 덜 모드 스레드에서 활성화되지 않습니다. 또한 TIP는 화면에 표시되는 UI를 표시하기 전에 ITFUIElementMgr::BeginUIElement를 호출해야 합니다. 이 메서드는 ITfUIElementSink를 호출하여 애플리케이션에 알립니다. 그리고 애플리케이션은 표시할 수 있는지 여부를 결정합니다. TIP가 BeginUIElement()를 호출할 때 TIP에는 해당 UI에 대한 ITfUIElement 인터페이스가 있어야 합니다. 애플리케이션은 UI를 그리기 위해 더 많은 정보를 검색하기 위해 다른 UI 특정 인터페이스를 가져오기 위해 인터페이스를 QI로 만듭니다. SYSTEM predefines ITfCandidateListUIElement and ITfReadingInformationUIElement for TIP. TIP가 UI 덜 모드 스레드 아래에 후보 목록을 표시하려는 경우 TIP는 ITfCandidateListUIElement 인터페이스의 인스턴스를 만들고 ITFUIElementMgr::BeginUIElement를 호출해야 합니다. ITfTextInputProcessorEx::ActivateEx가 호출되면 TIP는 추가 사용자 지정 UI를 제거할 수 있도록 스레드가 UI가 더 적다는 것을 이미 알고 있습니다. 그러나 물론 QIed로 처리할 수 있는 자체 인터페이스를 구현하고 알림을 만들 수 있습니다. 따라서 TIP 및 appliITfUIElement복제는 TIP 사용자 지정 UI에 대한 협상을 가질 수 있습니다.

UIElement 지원 TIP

UIElement를 지원하는 TIP는 GUID_TFCAT_TIPCAP_UIELEMENTENABLED 따라 분류되어야 합니다. GUID_TFCAT_TIPCAP_UIELEMENTENABLED TIP는 애플리케이션이 UI의 표시 여부를 제어할 수 있도록 ITfUIElementMgr을 사용하여 UI를 표시해야 합니다.

UIElement의 상태 표시/숨기기: ITfUIElement::Show 또는 ITfUIElement::IsShown 메서드가 나타내는 상태 표시/숨기기는 실제 표시 상태입니다. UIElement의 가용성과는 관련이 없습니다. 표시 상태가 있는 경우 UIElement를 항상 사용할 수 있어야 합니다. 표시 상태는 애플리케이션에서 제어할 수 있습니다. 애플리케이션이 갑자기 UILess 모드로 이동하고 ITfUIElement::SHOW with FALSE를 호출하여 TIP의 모든 UI를 숨기면 그 자체로 일부 UI 그리기를 시작할 수 있습니다. 그런 다음 TIP는 몇 가지 옵션 중 하나를 사용할 수 있습니다. 1) TIP은 UIElement를 숨기기 상태로 이동하고 UpdateUIElement 생성을 시작할 수 있습니다. 2) TIP은 UI 요소가 숨기기 상태를 지원하지 않으므로 UIElement를 완료할 수 있으며 팁은 EndUIElement()를 호출하여 완료합니다.

미리 정의된 UI 요소

후보 목록: 후보 목록은 EA 입력의 주요 UI 요소 중 하나입니다. 이 UI 요소는 후보 목록과 그리기 위한 후보 문자열의 해당 번호를 제공합니다.

읽기 정보 창 읽기 정보 창은 중국어 키보드 입력에 일반적입니다. 문서에 컴퍼지션 문자열로 삽입할 수 없는 스테이지가 있습니다. 일부 중국어 입력 프로세서는 읽기, 윗주 또는 입력 정보를 표시하는 작은 읽기 정보 창을 엽니다.

UILessMode의 흐름도

U I LessMode 흐름 차트를 보여 주는 다이어그램

TIP이 *pbShown by ITfUIElementMgr::BeginUIElement에서 TRUE를 받은 후에는 TIP에서 UIElement에 대한 UpdateUIElement를 호출할 필요가 없습니다. 그러나 TIP는 ITfUIElementMgr 및 애플리케이션이 UIElement의 상태를 추적할 수 있도록 EndUIElement()를 호출해야 합니다. TIP는 BeginUIElement()가 *pbShow에서 FALSE를 반환한 후 UpdateUIElement()를 호출해야 합니다. UI를 그리려는 애플리케이션은 BeginUIElement()의 콘텐츠를 확인하지 않고 BeginUIElement()에서 표시 상태를 반환하고 UpdateUIElement()에서 콘텐츠 확인을 시작합니다. 예를 들어 후보 목록 UIElement의 업데이트 플래그에는 첫 번째 UpdateUIElement()에 모든 비트가 있습니다. 즉, BeginUIElement()에서 UIElement의 콘텐츠를 준비할 필요가 없습니다.

T I P가 'ITUIElementMgr::BeginUIElement()' 및 'Application의 UIElementSink의 BeginUIElement'를 호출할 때를 보여 주는 다이어그램.*pbShow에서 애플리케이션이 FALSE를 반환하는 것을 보여 주는 다이어그램uilessmode 흐름도

후보 목록 UIElement

PageIndex 정보: 후보 목록을 그리는 애플리케이션은 목록 내용이 변경될 때 페이지당 문자열 수를 계산합니다(TF_CLUIE_STRING 설정됨). 후보 목록을 UILess 모드로 사용할 수 있는 동안에는 페이지 인덱스 변경이 좋지 않습니다. 즉, 선택 영역을 다음 페이지로 이동할 때 스크롤하지 않고 TIP의 후보 목록이 페이징으로 동작해야 합니다. 선택 영역 이동 시 스크롤이 발생하면 페이지 인덱스가 변경되고 애플리케이션에서 페이지 인덱스가 다시 계산되어야 합니다. 결과는 TIP에서 예상할 수 없습니다.

선택 사항 없음: ITfCandidateListUIElement::GetSelection 은 후보 목록에 선택 항목이 없으면 S_FALSE 반환합니다. 첫 번째 매개 변수의 반환 값이 잘못되었습니다.