영어로 읽기

다음을 통해 공유


언어 모음(Text Services)

Language Bar 개체 구현

언어 모음에 항목 추가를 지원하려면 텍스트 서비스가 ITfSource 인터페이스 및 ITfLangBarItem 컨트롤 요소 중 하나를 지원하는 개체를 구현해야 합니다. 항목이 설치되면 언어 모음은 항목의 ITfSource::AdviseSink를 IID_ITfLangBarItemSink 호출하여 ITfLangBarItemSink 싱크를 설치 합니다 . 항목은 ITfLangBarItemSink 인터페이스를 사용하여 언어 모음에 변경 내용을 알립니다(예: 항목이 숨김, 표시, 사용 또는 비활성화된 경우).

네 가지 유형의 언어 모음 항목을 설치할 수 있으며 필요한 각 인터페이스는 ITfLangBarItem에서 만들어집니다. 다음은 가능한 ITfLangBarItem 컨트롤 요소입니다.

요소 Description
단추 언어 모음 단추는 명령 단추, 토글 컨트롤 또는 언어 모음의 메뉴로 작동합니다. 개체는 ITfLangBarItemButton 인터페이스를 지원해야 합니다.
풍선 언어 모음 풍선은 언어 모음에서 팝업 알림으로 작동합니다. 개체는 ITfLangBarItemBalloon 인터페이스를 지원해야 합니다.
Bitmap 언어 모음 비트맵은 비트맵을 표시하는 언어 모음에서 정적 요소로 작동합니다. 개체는 ITfLangBarItemBitmap 인터페이스를 지원해야 합니다.
비트맵 단추 언어 모음 비트맵 단추는 텍스트와 비트맵을 표시하는 언어 모음의 단추 요소로 작동합니다. 개체는 ITfLangBarItemBitmapButton 인터페이스를 지원해야 합니다.

 

단추 스타일

단추 요소는 다음 중 하나로 작동할 수 있습니다. 단추 항목의 함수는 ITfLangBarItem::GetInfo 메서드에서 TF_LANGBARITEMINFO 구조체의 dwStyle 멤버에 설정된 플래그에 의해 결정됩니다.

요소 설명
단추 단추는 표준 명령 단추로 작동합니다. 이 단추 스타일은 TF_LBI_STYLE_BTN_BUTTON 스타일로 식별됩니다. ITfLangBarItemButton::OnClick은 항목을 클릭할 때 호출됩니다. ITfLangBarItemButton::InitMenu 및 ITfLangBarItemButton::OnMenuSelect는 사용되지 않습니다.
토글 단추 단추는 검사 상자와 유사하게 클릭한 상태를 유지할 수 있는 토글 컨트롤로 작동합니다. 이 단추 스타일은 TF_LBI_STYLE_BTN_TOGGLE 스타일로 식별됩니다. ITfLangBarItemButton::OnClick은 항목을 클릭할 때 호출됩니다. ITfLangBarItemButton::InitMenu 및 ITfLangBarItemButton::OnMenuSelect는 사용되지 않습니다.
메뉴 단추는 드롭다운 메뉴로 작동합니다. 이 단추 스타일은 TF_LBI_STYLE_BTN_MENU 스타일로 식별됩니다. ITfLangBarItemButton::InitMenu는 단추를 클릭할 때 호출됩니다. 사용자가 메뉴에서 항목을 선택하면 언어 표시줄에서 선택한 메뉴 항목의 식별자를 사용하여 ITfLangBarItemButton::OnMenuSelect를 호출합니다. ITfLangBarItemButton::OnClickis가 사용되지 않습니다.

 

메뉴 단추 구현

사용자가 메뉴 단추를 클릭하면 언어 모음에서 ITfLangBarItemButton::InitMenu를 호출합니다. 항목은 InitMenu에 전달된 ITfMenu 인터페이스를 사용하여 메뉴에 항목을 추가합니다.

메뉴에 하위 메뉴를 추가하려면 TF_LBMENUF_SUBMENU ITfMenu::AddMenuItem 을 호출합니다. 이 작업이 완료되면 하위 메뉴를 나타내는 새 ITfMenu 개체가 AddMenuItem의 ppMenu 매개 변수에 반환됩니다. 이 새 메뉴 개체는 하위 메뉴에 항목을 추가하는 데 사용됩니다.

사용자가 메뉴에서 항목을 선택하면 언어 표시줄에서 선택한 메뉴 항목의 식별자를 사용하여 ITfLangBarItemButton::OnMenuSelect 를 호출합니다.

언어 모음에 항목 추가

텍스트 서비스는 ITfTextInputProcessor::Activate 메서드가 호출되면 해당 항목을 언어 모음에 추가하고 ITfTextInputProcessor::D eactivate 가 호출되면 해당 항목을 제거해야 합니다.

언어 모음에 항목을 추가하기 위해 텍스트 서비스는 IID_ITfLangBarItemMgr ITfThreadMgr ::QueryInterface를 호출하여 ITfLangBarItemMgr 인터페이스를 가져옵니다. 그런 다음 텍스트 서비스는 언어 모음 항목 개체에 대한 포인터를 사용하여 ITfLangBarItemMgr::AddItem 을 호출합니다.

텍스트 서비스는 비활성화될 때 항목을 제거해야 합니다. 텍스트 서비스는 항목을 추가하는 데 사용되는 것과 동일한 ITfLangBarItemMgr 인터페이스를 사용하거나 인터페이스의 다른 instance 가져옵니다. 그런 다음 텍스트 서비스는 제거할 항목의 인터페이스 포인터를 사용하여 ITfLangBarItemMgr::RemoveItem 을 호출합니다.

시스템 언어 모음 항목 확장

TSF는 기존 언어 모음 메뉴에 메뉴 항목을 추가하는 기능을 제공합니다. 이렇게 하면 텍스트 서비스가 도구 모음에 별도의 단추를 추가하지 않고도 다른 텍스트 서비스의 메뉴에 항목을 추가할 수 있습니다. 이렇게 하면 메뉴 항목을 논리 그룹으로 구성할 수도 있습니다. 예를 들어 표준 음성 텍스트 서비스에 추가 기능을 제공하는 텍스트 서비스는 자체 최상위 메뉴 단추를 추가하는 대신 음성 텍스트 서비스 메뉴에 항목을 추가할 수 있습니다.

텍스트 서비스는 ITfSystemLangBarItemSink 인터페이스를 지원하는 개체를 구현하여 언어 모음 메뉴 확장을 제공합니다. 이 인터페이스는 메뉴 단추의 ITfLangBarItemButton 인터페이스와 동일하게 작동합니다. 메뉴가 표시되면 확장 중인 텍스트 서비스가 ITfSystemLangBarItemSink::InitMenu를 호출합니다. 확장은 InitMenu에 전달된 ITfMenu 인터페이스를 사용하여 메뉴에 항목을 추가합니다. 사용자가 확장에서 추가한 항목을 선택하면 확장 중인 텍스트 서비스가 선택한 메뉴 항목의 식별자를 사용하여 ITfSystemLangBarItemSink::OnMenuSelect 를 호출합니다.

언어 모음 메뉴 확장을 설치하기 위해 텍스트 서비스는 다음 단계를 완료합니다.

  1. 확장할 항목에 대한 GUID를 사용하여 ITfLangBarItemMgr::GetItem을 호출하여 확장할 항목에 대한 ITfLangBarItem 인터페이스를 가져옵니다.
  2. IID_ITfSource ITfLangBarItem::QueryInterface를 호출하여 확장할 항목에 대한 ITfSource 인터페이스를 가져옵니다.
  3. IID_ITfSystemLangBarItemSink ITfSystemLangBarItemSink 개체에 대한 포인터를 사용하여 ITfSource::AdviseSink를 호출합니다. ITfSource::AdviseSink가 실패하면 텍스트 서비스에서 메뉴 확장을 지원하지 않습니다.

ITfSource::UnadviseSinkITfSource::AdviseSink

지원 언어 모음 메뉴 확장

텍스트 서비스를 사용하면 다른 텍스트 서비스에서 위에 표시된 대로 해당 언어 모음 메뉴에 항목을 추가할 수 있습니다. ITfLangBarItemMgr::GetItem을 호출하여 항목을 가져올 수 있도록 GUID를 게시해야 하는 텍스트 서비스입니다.

메뉴 확장을 지원하려면 텍스트 서비스가 ITfSource 인터페이스를 지원해야 합니다. 다음 단계에서는 하나 이상의 메뉴 확장을 지원할 수 있습니다.

  1. IID_ITfSystemLangBarItemSink 있는 ITfSource::AdviseSink 가 호출되면 텍스트 서비스는 ITfSystemLangBarItemSink 인터페이스를 저장하고 확장을 식별하는 쿠키 값을 반환해야 합니다.
  2. ITfLangBarItemButton::InitMenu가 호출되면 텍스트 서비스는 확장의 ITfSystemLangBarItemSink::InitMenu 메서드를 호출합니다. 텍스트 서비스는 텍스트 서비스 자체에서 추가한 항목과 달리 확장에서 추가한 메뉴 항목을 식별하는 방법을 구현해야 합니다.
  3. 확장에 속하는 메뉴 항목 식별자를 사용하여 ITfLangBarItemButton::OnMenuSelect 를 호출하면 텍스트 서비스는 확장의 ITfSystemLangBarItemSink::OnMenuSelect 메서드를 호출합니다.
  4. ITfSource::UnadviseSink가 적절한 쿠키를 사용하여 호출되면 텍스트 서비스는 메뉴 확장을 제거합니다.

Text Services 프레임워크를 설정하는 방법

언어 모음(애플리케이션)