다음을 통해 공유


PenInputPanel 사용자에 대한 TextInputPanel

Windows Vista 릴리스에는 애플리케이션이 입력 패널을 사용하고 상호 작용하는 방법에 대한 새로운 범위의 가능성을 제공하는 태블릿 PC 입력 패널에 대한 새로운 프로그래밍 기능 개체가 포함되어 있습니다. 처음으로 애플리케이션 개발자는 In-Place 입력 패널 아이콘을 배치하여 텍스트 상자와 정렬하거나 고객 수동 입력 화면 모서리에 배치하여 대체 입력 모드에 대한 액세스를 제공할 수 있습니다. 입력 패널 아이콘이 In-Place 입력 패널로 확장되면 개발자는 위치 지정을 동일하게 제어할 수 있습니다. 이렇게 하면 In-Place 입력 패널이 애플리케이션 레이아웃의 주요 사용자 인터페이스 요소와 겹치지 않도록 하거나 애플리케이션의 사용자 인터페이스를 재배치하여 In-Place 입력 패널의 공간을 만든 다음 예약된 공간에 배치할 수 있습니다. 새로운 프로그래밍 기능 모델에는 위치 지정 이상의 지원이 포함되어 있으며, 개발자는 입력 영역, 수정 모드 및 입력 패널의 다른 많은 속성을 사용자 지정하여 애플리케이션에서 텍스트 입력 환경을 맞춤화할 수 있습니다. 마지막으로, 애플리케이션이 처음으로 입력 패널에서 텍스트 삽입과 연결된 인식된 텍스트 외에 사용자 잉크를 받을 수 있습니다. 이렇게 하면 변경 내용 추적 로그의 잉크를 비롯하여 사용자가 애플리케이션에서 잉크를 편집하거나 볼 수 있는 새로운 애플리케이션 시나리오가 가능합니다. 이러한 새로운 프로그래밍 기능은 Microsoft가 입력 패널 개발자 스토리에 대해 받은 피드백의 직접적인 결과이며 애플리케이션과 입력 패널의 긴밀한 통합을 향한 첫 번째 단계를 나타냅니다.

이 보강된 입력 패널 프로그래밍 기능 모델을 제공하기 위해 입력 패널과 프로그래밍 방식으로 상호 작용하기 위한 기존 메커니즘인 PenInputPanel 개체는 더 이상 사용되지 않고 새 TextInputPanel 개체로 대체됩니다. TextInputPanel 개체는 새로운 프로그래밍 기능 외에도 PenInputPanel 개체의 모든 프로그래밍 기능에 가까운 기능을 제공합니다. TextInputPanel 개체는 Windows Vista 및 Windows Vista 소프트웨어 개발자 키트 모두에 포함됩니다. TextInputPanel 개체는 Windows Vista 입력 패널과만 호환되며 Windows XP 서비스 팩 2 또는 이전 입력 패널에서 사용할 수 없습니다. 이전에 PenInputPanel 개체를 사용하도록 작성된 애플리케이션은 Windows Vista 입력 패널에서 계속 작동합니다. 그러나 새 태블릿 애플리케이션을 작성할 때 개발자는 사용되지 않는 PenInputPanel 개체 대신 새 TextInputPanel 개체를 사용하는 것이 좋습니다.

TextInputPanel 개체의 각 프로그래밍 옵션은 텍스트 필드별로 적용할 수 있습니다. 이 작업은 AttachedEditWindow 속성을 사용하여 TextInputPanel 개체의 instance 연결하여 수행됩니다. 속성은 텍스트 필드의 창 핸들로 설정해야 합니다.

참고

: 입력 패널이 부동 또는 도킹된 상호 작용 모드에 있을 때가 아니라 입력 패널이 현재 위치 상호 작용 모드에 있을 때 아래에 설명된 몇 가지 속성과 메서드가 적용됩니다. 현재 위치 상호 작용 모드는 편집 가능한 필드에 포커스를 배치하면 입력 패널 아이콘이 필드 옆에 나타나고 입력 패널 아이콘을 탭하면 입력 패널이 확장되는 입력 패널 동작입니다. 입력 패널이 현재 위치 상호 작용 모드에 있을 때만 적용되는 메서드 및 속성은 모두 메서드 또는 속성 이름에 'InPlace'를 포함합니다.

 

입력 패널 아이콘 및 입력 패널 표시 유형 제어

애플리케이션 개발자가 Windows Vista에서 제어할 수 있는 입력 패널의 첫 번째 측면은 가시성입니다. TextInputPanel 개체를 사용하면 세 가지 방법으로 In-Place 입력 패널의 표시 유형을 제어할 수 있습니다. 속성과 메서드의 조합을 사용하여 애플리케이션은 In-Place 입력 패널이 표시되는지, In-Place 입력 패널이 표시되는지, 입력 패널 아이콘으로 먼저 표시되는지 또는 즉시 확장된 것으로 표시되는지 여부를 확인할 수 있습니다. 다음 섹션에서 설명하는 위치 제어 기술과 가시성을 제어하기 위한 이러한 기술을 결합하여 애플리케이션 개발자는 애플리케이션의 In-Place 입력 패널을 사용하여 사용자 지정 시작 지점 및 사용자 지정 작업 흐름을 만들 수 있습니다.

참고

이 섹션에서 설명하는 속성 및 메서드는 입력 패널이 In-Place 상호 작용 모드에 있는 경우에만 적용됩니다.

 

첫째, 가장 기본적으로 InPlaceVisibleOnFocus 속성을 false로 설정하여 In-Place 입력 패널 및 입력 패널 아이콘이 표시되지 않도록 할 수 있습니다. true로 설정하면 사용자 또는 그룹 정책 사용하지 않도록 설정되지 않은 경우 가능한 경우 표시되는 시스템 기본값으로 되돌아갑니다. 이 옵션은 입력 패널 대신 사용자 지정 텍스트 입력 솔루션을 포함하는 애플리케이션에 유용합니다.

둘째, 개발자는 DefaultInPlaceState 속성을 설정하여 InPlaceState 열거형에 지정된 대로 현재 위치 상태를 지정할 수 있습니다. 포커스가 텍스트 필드에 배치될 때 In-Place 입력 패널이 나타납니다. 시스템 기본값은 입력 패널이 확장된 상태에 이미 표시되지 않는 한 In-Place 입력 패널이 가리키기 상태로 표시되는 데 사용됩니다. 이 경우 입력 패널은 확장된 상태로 유지됩니다. DefaultInPlaceState 속성을 InPlaceState_Expanded 설정하면 입력 패널 아이콘이 먼저 나타나고 입력 패널이 확장되기 전에 사용자가 입력 패널 아이콘을 탭해야 하는 대신 In-Place 입력 패널이 항상 확장된 상태로 표시됩니다. 다른 두 옵션은 시스템 기본 동작인 InPlaceState_Auto 항상 입력 패널 아이콘이 표시되도록 하는 InPlaceState_HoverTarget . In-Place 입력 패널이 항상 확장되도록 지정하는 기능은 TextInputPanel 개체의 새로운 기능이며 PenInputPanel 개체를 사용할 수 없습니다. 다음 그림에서는 In-Place 입력 패널 아이콘 및 패널의 확장된 상태를 보여 줍니다.

현재 위치 입력 패널 아이콘 및 확장된 상태

개발자는 현재 위치 상태를 제어할 수 있을 뿐만 아니라 CurrentInPlaceState 속성을 가져오면 지정된 순간에 현재 위치 상태를 확인할 수도 있습니다. DefaultInPlaceState가 InPlaceState_Auto 경우 CurrentInPlaceStateInPlaceState_HoverTarget 경우를 제외하고 입력 패널이 표시되지 않는 경우 CurrentInPlaceState는 DefaultInPlaceState와같습니다. InPlaceVisibilityChanging / InPlaceVisibilityChanged 이벤트를 사용하여 In-Place 입력 패널의 표시 상태를 추적할 수 있습니다.

마지막으로 개발자는 SetInPlaceVisibility 메서드를 사용하여 In-Place 입력 패널을 숨기거나 표시하도록 강제할 수 있습니다. 개발자가 이전에 DefaultInPlaceState 속성을 설정한 경우 입력 패널이 강제로 표시될 때 지정된 상태로 표시됩니다. 포커스가 현재 TextInputPanel 개체가 연결된 창에 있고 사용자에게 도킹 또는 부동과 같은 다른 상호 작용 모드에서 입력 패널이 열려 있지 않은 경우에만 애플리케이션이 In-Place 입력 패널을 숨기거나 표시할 수 있습니다. In-Place 입력 패널을 숨기거나 표시하도록 강제하는 기능은 TextInputPanel 개체를 사용하는 새로운 기능이며 PenInputPanel 개체를 사용할 수 없습니다.

이러한 옵션을 사용하면 애플리케이션 개발자가 In-Place 입력 패널이 표시되는 시기와 상태를 세밀하게 제어할 수 있습니다. 기본 현재 위치 상태를 사용자 지정하고 포커스 변경과 독립적으로 현재 위치 표시 유형을 제어하면 입력 패널이 애플리케이션 설정 또는 사용자 입력에 애플리케이션에 응답할 때 애플리케이션 개발자가 사용자 지정 작업 흐름을 만들 수 있습니다.

입력 패널 아이콘 및 입력 패널의 절대 위치 지정

TextInputPanel 개체에 있는 가장 매력적인 새로운 기능은 In-Place 입력 패널의 절대 위치 지정일 수 있습니다. 이 새로운 기능을 사용하면 애플리케이션 개발자가 In-Place 입력 패널이 애플리케이션 레이아웃의 하나 이상의 주요 시각적 요소와 겹치지 않도록 할 수 있습니다. PenInputPanel 개체를 사용하면 오프셋을 기준으로 텍스트 필드를 기준으로 In-Place 입력 패널의 위치를 지정할 수 있었지만 입력 패널은 여전히 화면에 유지되도록 자체 조정됩니다. Vista에서 처음으로 애플리케이션은 화면 좌표를 사용하여 In-Place 입력 패널을 절대 위치에 배치할 수 있습니다. 또한 입력 패널을 화면에 유지해야 하는 책임은 애플리케이션 개발자에게 맡기므로 입력 패널의 위치가 자동으로 임의로 변경될 가능성을 제거합니다.

참고

이 섹션에서 설명하는 속성 및 메서드는 입력 패널이 In-Place 상호 작용 모드에 있는 경우에만 적용됩니다.

 

In-Place 입력 패널의 위치를 지정하는 데 필요한 두 가지 기본 메서드는 SetInPlacePositionSetInPlaceHoverTargetPosition입니다. 첫 번째는 In-Place 입력 패널의 위치를 지정하는 데 사용되고 두 번째는 In-Place 입력 패널의 입력 패널 아이콘 위치를 지정하는 데 사용됩니다. 애플리케이션이 In-Place 입력 패널의 위치가 아닌 입력 패널 아이콘 위치만 설정하도록 선택하면 In-Place 입력 패널이 시스템에 의해 결정되는 기본 위치에 표시됩니다. 마찬가지로 애플리케이션이 입력 패널 아이콘이 아닌 In-Place 입력 패널의 위치를 변경하는 경우 입력 패널 아이콘이 기본 위치에 나타납니다. 위치는 화면 좌표로 지정됩니다. 배치되는 실제 지점은 수정 빗이 확장되지 않은 입력 패널 아이콘 또는 입력 패널의 왼쪽 위 모서리입니다. 수정 빗이 확장되면 배치되는 지점이 변경되지 않습니다. (아래 그림 2 참조) In-Place 입력 패널 및 In-Place 입력 패널 아이콘이 배치될 수 있는 위치에 대한 제한은 없으며 이러한 메서드를 호출하여 화면에 유지하는 것은 애플리케이션의 책임입니다. 두 메서드는 모두 동기적입니다. 즉, 메서드가 반환되기 전에 위치 지정이 발생합니다. 입력 패널이 부동 또는 도킹된 상호 작용 모드에서 이미 열려 있는 경우 In-Place 입력 패널 또는 In-Place 입력 패널 아이콘을 배치하려는 시도가 실패합니다. 또한 TextInputPanel 개체에 연결된 창에 현재 포커스가 없는 경우 메서드가 실패합니다.

SetInPlacePosition 또는 SetInPlaceHoverTargetPosition을 호출해도 In-Place 입력 패널 또는 입력 패널 아이콘이 자동으로 표시되지는 않으며, 다음에 표시될 때 위치를 설정하기만 하면 됩니다. SetInPlaceVisibility를 호출하면 즉시 표시되도록 강제할 수 있습니다.

현재 위치 입력 패널의 측정값

In-Place 입력 패널을 배치할 때 화면에서 벗어날지 여부를 계산하는 것은 약간 까다로울 수 있습니다. 이 프로세스를 더 쉽게 하기 위해 이 프로세스를 간소화하는 데 사용할 수 있는 TextInputPanel 개체의 몇 가지 속성이 있습니다. 이러한 속성과 이벤트를 함께 사용하여 모든 상태에서 In-Place 입력 패널의 정확한 크기를 확인할 수 있습니다.

  • InPlaceBoundingRectangle – 이 속성은 현재 입력 언어에 대한 가장 큰 입력 영역이 표시되면 In-Place 입력 패널에 대한 경계 사각형을 제공합니다. 쓰기 패드 또는 문자 패드가 가장 큰 입력 영역으로 결정되면 삽입 단추의 높이가 포함됩니다. 수정 빗의 높이는 포함되지 않습니다. In-Place 입력 패널이 자동으로 증가하면 InPlaceSizeChanging / InPlaceSizeChanged 이벤트 쌍이 실행되고 이 속성의 값이 추가 쓰기 영역 또는 쓰기 줄을 포함하도록 업데이트됩니다.
  • PopUpCorrectionHeight – 이 속성은 입력 패널 위에 배치될 때 삽입 후 수정 빗의 높이를 지정합니다. 삽입 후 수정 빗이 팝업된 In-Place 입력 패널의 전체 높이 를 얻으려면 InPlaceBoundingRectangle 의 높이를 PopUpCorrectionHeight에 추가합니다.

In-Place 입력 패널 및 입력 패널 아이콘의 절대 위치를 설정하는 간단한 대안으로, 애플리케이션은 In-Place 입력 패널이 기본적으로 텍스트 입력 필드 위 또는 아래에 표시되는지 여부를 지정할 수 있습니다. 이러한 방식으로 보다 느슨하게 제어된 방식으로 애플리케이션 레이아웃의 요소가 겹치는 것을 방지할 수 있습니다. 이렇게 하려면 애플리케이션에서 PreferredInPlaceDirectionInPlaceDirection_Bottom 또는 InPlaceDirection_Top 설정합니다. In-Place 입력 패널이 입력 패널을 화면에 유지하는 데 필요한 경우 애플리케이션에서 설정한 기본 설정을 재정의하기 때문에 속성이 기본 설정입니다. 시스템 기본값은 가능한 경우 In-Place 입력 패널을 텍스트 필드 아래에 배치하고, 그렇지 않으면 위에 배치하는 것입니다. PreferredInPlaceDirectionInPlaceDirection_Auto 설정하면 시스템 기본값이 복원됩니다.

TextInputPanel 개체의 속성, 메서드 및 이벤트를 함께 사용하면 개발자가 애플리케이션 레이아웃에서 In-Place 입력 패널 및 입력 패널 아이콘을 영리하게 배치할 수 있도록 In-Place 입력 패널을 제어할 수 있으므로 레이아웃 흐름을 방해하지 않고 경우에 따라 통합된 것처럼 보일 수 있습니다. 이 새로운 수준의 제어는 태블릿 애플리케이션 디자인에 큰 성공입니다.

세 가지 입력 패널 영역: 쓰기 패드, 문자 패드 및 키보드에 대한 액세스

입력 패널에는 쓰기 패드, 문자 패드 및 키보드의 세 가지 입력 영역이 있습니다. TextInputPanel 개체를 사용하여 애플리케이션은 입력 패널이 열릴 때 사용자에게 표시되는 기본 입력 영역을 지정할 수 있습니다. 애플리케이션이 그렇게 하는 기본 이유는 입력 영역을 특정 필드의 입력 형식과 페어링하기 위한 것입니다. 예를 들어 쓰기 패드는 메모 필드를 작성하는 데 가장 적합하지만 키보드는 숫자와 문자가 모두 포함된 제품 일련 번호를 입력하는 데 더 편리할 수 있습니다. 기본 입력 영역을 지정하기 위해 애플리케이션은 PanelInputArea 열거형에 정의된 세 가지 입력 영역 중 하나로 DefaultInputArea 속성을 설정합니다. 다음 그림에서는 세 가지 입력 영역을 보여 줍니다.

쓰기, 문자 및 키보드 입력 패널

시스템 기본 입력 영역은 영어, 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 네덜란드어 및 기타 모든 라틴어 입력 언어용 Writing Pad입니다. 일본어, 중국어 및 한국어를 포함한 동아시아 입력 언어의 경우 기본 입력 영역은 Character Pad입니다. 그러나 사용자가 입력 영역을 변경하면 현재 입력 언어의 기본 입력 영역을 재정의하고 해당 입력 언어의 새 기본값으로 저장됩니다. 사용자 또는 그룹 정책에서 암호 보안을 사용하지 않도록 설정하지 않은 경우 입력 언어에 관계없이 키보드는 암호 필드의 기본 입력 영역입니다. 모든 경우에 기본 입력 패널 영역을 프로그래밍 방식으로 재정의합니다. 현재 필드가 암호 필드이거나 현재 입력 언어에 대한 필기 인식기가 프로그래밍 방식으로 선택된 입력 영역을 지원하지 않는 한 시스템 기본값을 재정의합니다. DefaultInputArea 속성을 InPlaceDirection_Auto 설정하면 시스템 기본 설정이 복원됩니다.

기본 입력 패널 영역이 프로그래밍 방식으로 설정되었는지 여부에 관계없이 사용자는 입력 패널이 열리면 현재 입력 패널 영역을 변경할 수 있습니다. 사용자가 현재 입력 영역을 변경한 후에는 입력 패널이 닫히거나 사용자가 선택 영역을 다시 변경할 때까지 사용자 선택이 유지됩니다. 입력 패널을 닫고 다시 열면 프로그래밍 방식으로 설정된 기본 입력 영역이 다시 표시됩니다.

현재 입력 패널 영역은 기본 입력 패널 영역과 다를 수 있으므로 애플리케이션은 CurrentInputArea 속성을 쿼리하여 현재 표시되는 입력 영역을 확인할 수 있습니다. 입력 패널이 현재 표시되지 않는 경우 현재 입력 영역은 기본 입력 영역과 같습니다. CurrentInputArea 속성은 PanelInputArea_Auto 같지 않습니다. DefaultInputAreaPanelInputArea_Auto 같으면 CurrentInputArea는 표시된 마지막 입력 영역 또는 입력 패널이 표시되지 않은 경우 현재 입력 언어의 시스템 기본값과 같습니다.

PenInputPanel 개체에 있는 입력 영역 지원과 TextInputPanel 개체의 입력 영역 지원 간의 주요 차이점은 이제 애플리케이션에서 쓰기 패드 및 키보드 외에도 기본 입력 영역을 Character Pad로 설정하는 옵션이 있다는 사실입니다.

위의 속성을 사용하면 애플리케이션이 다른 필드에 표시된 입력 패널 입력 영역을 제어하고 사용자의 텍스트 입력 환경을 최적화할 수 있습니다. 또한 애플리케이션은 현재 입력 영역에 대한 인식을 유지하고 현재 사용자 작업에 가장 적합한 입력 영역에 따라 조건부 결정을 내릴 수 있습니다.

입력 패널의 상호 작용 모드에 대한 자세한 정보

입력 패널의 현재 입력 영역을 검색할 수 있을 뿐만 아니라 현재 상호 작용 모드인 In-Place, Docked 또는 Floating을 검색할 수도 있습니다. 사용자가 애플리케이션과 상호 작용하는 방법을 이해하거나 TextInputPanel 개체의 일부 메서드와 속성이 In-Place 상호 작용 모드에만 적용되기 때문에 애플리케이션에서 현재 상호 작용 모드를 아는 것이 중요할 수 있습니다. 예를 들어 애플리케이션에서 는 기존 사용자 인터페이스 요소를 재배치한 다음 In-Place 입력 패널을 사용자 인터페이스의 빈 영역 위에 배치하여 조정하기 전에 현재 상호 작용 모드가 제자리에 있는지 확인하기 위해 검사 합니다.

도킹, 부동 및 속도 내 입력 패널 모드

TextInputPanel 개체의 CurrentInteractionMode 속성은 사용자가 선택한 대로 현재 상호 작용 모드를 저장합니다. 가능한 모드는 InteractionMode 열거형에 의해 다음과 같이 정의됩니다.

InteractionMode_InPlace – In-Place 상호 작용 모드에서 입력 패널은 현재 포커스가 있는 텍스트 입력 필드 옆에 나타납니다. 기본적으로 삽입 포인터가 텍스트 입력 필드에 배치되면 In-Place 입력 패널 아이콘이 나타납니다. 입력 패널 아이콘을 탭하면 입력 패널이 확장됩니다. In-Place 입력 패널은 삽입 지점이 편집 가능한 필드에 있는 경우에만 표시됩니다.

InteractionMode_Floating – 부동 상호 작용 모드는 삽입 지점에 연결되지 않는다는 점을 제외하고 InPlace 상호 작용 모드와 유사합니다. 부동 입력 패널은 기본적으로 화면 왼쪽 가장자리에 표시되는 입력 패널 탭을 탭하여 열립니다. 사용자가 부동 입력 패널 및 입력 패널 탭을 모두 끌어서 위치를 변경할 수 있습니다. 입력 패널의 부동 모드 위치 및 제어는 전적으로 사용자에게 맡기게 됩니다.

InteractionMode_DockedTop – Docked-Top 조작 모드에서 입력 패널이 화면 맨 위에 나타나고 현재 데스크톱의 크기가 조정되므로 입력 패널이 다른 창 또는 UI 요소와 겹치지 않습니다. 도킹 모드에서는 입력 패널을 끌거나 이동할 수 없습니다.

InteractionMode_DockedBottom – Docked-Bottom 상호 작용 모드는 화면 아래쪽에 입력 패널이 표시되는 것을 제외하고 Docked-Top 모드와 동일합니다.

입력 패널이 표시되지 않으면 현재 상호 작용 모드가 현재 위치입니다.

현재 상호 작용 모델을 게시하는 것은 TextInputPanel 개체가 이전 버전에서 사용할 수 있었던 것보다 입력 패널의 상태에 대한 자세한 정보를 제공하는 또 다른 방법입니다.

입력 패널의 수정 모드에 대한 자세한 정보

TextInputPanel 개체가 에 대한 자세한 정보를 제공하고 제어하는 입력 패널의 마지막 측면은 수정 모드입니다. 수정 모드를 알면 애플리케이션이 입력 패널의 현재 크기를 결정하는 데 도움이 됩니다. 애플리케이션에서 삽입 후 수정이 확장되는 방식을 제어하는 것은 애플리케이션에서 수정 환경을 사용자 지정하는 한 가지 방법입니다.

수정 빗이 표시할 수 있는 두 가지 기본 모드는 사전 삽입 및 삽입 후입니다. 사전 삽입 수정 빗은 애플리케이션에 삽입하기 전에 텍스트를 수정하는 데 사용됩니다. 사용자 잉크로 쓰기 패드의 기준 아래에 표시되는 보류 중인 텍스트를 탭하여 활성화됩니다. 삽입 후 수정 빗은 애플리케이션에 삽입된 후 텍스트를 수정하는 데 사용됩니다. 삽입 지점을 에 배치하거나 이전에 삽입한 텍스트를 선택하여 활성화됩니다. 두 가지 기본 모드 외에도 삽입 후 수정 빗이 표시되는 방법에 대한 몇 가지 변형이 있습니다. 먼저 입력 패널 위 또는 아래에 표시될 수 있고 두 번째는 축소되거나 확장된 것처럼 보일 수 있습니다. 축소된 상태에서 삽입 후 수정 빗은 대체 항목 목록만 표시합니다. 확장된 상태에서는 단어를 다시 쓸 수 있는 대체 항목과 영역을 모두 포함합니다.

수정 빗, 사전 및 삽입 후 입력 패널

CurrentCorrectionMode 속성을 사용하면 애플리케이션이 수정 빗의 현재 구성을 확인할 수 있습니다. CorrectionMode 열거형에 정의된 이 속성의 가능한 값은 NotVisible, PreInsertion, PostInsertionCollapsedPostInsertionExpanded입니다. 입력 패널 또는 수정 빗이 표시되지 않으면 CurrentCorrectionMode표시되지 않습니다.

기본적으로 시스템은 에서 수정 가능한 텍스트를 선택할 때 확장된 삽입 후 수정 빗을 표시하고 삽입 지점이 수정 가능한 텍스트에 배치될 때 축소됨을 표시합니다. 애플리케이션은 ExpandPostInsertionCorrection 속성을 true로 설정하여 삽입 후 수정 빗이 항상 확장된 상태를 표시할 위치를 지정할 수 있습니다. 시스템 기본값은 false입니다. ExpandPostInsertionCorrection 속성이 IHandWrittenTextInsertion 인터페이스와 함께 사용되는 경우 애플리케이션 개발자는 자동으로 받지 않는 애플리케이션에 수정 지원을 저렴하게 추가할 수 있습니다.

입력 패널의 수정 상태를 추적하고 제어하는 것은 더 엄격한 입력 패널 및 애플리케이션 통합을 가능하게 하는 TextInputPanel 개체의 많은 새로운 기능 중 하나입니다.

이벤트 발생 전후 이벤트 알림

TextInputPanel 개체에서 크게 향상된 입력 패널 프로그래밍 기능의 또 다른 측면은 이벤트 모델입니다. 이제 변경이 발생한 후 입력 패널 상태가 변경되었음을 알리는 이벤트만 발생시키는 대신 변경이 발생하기 전과 후에 별도의 이벤트가 전송됩니다. 이벤트의 시작을 알리는 이벤트에는 'Change' 또는 'Inserting'과 같은 현재 시제 동사가 포함되어 있으며, 이벤트의 결론을 알리는 이벤트에는 'Changed' 또는 'Inserted'와 같은 과거 시제 동사가 포함됩니다.

이 이벤트 모델을 사용하면 애플리케이션이 변경 전이나 발생 시 변경에 대응할 수 있습니다. 입력 패널은 모든 이벤트에 대한 이벤트 처리기가 완료될 때까지 변경 내용이 계속 진행되거나 변경 후 다시 시작되지 않도록 차단됩니다. 이러한 이벤트는 동기적이며 이러한 방식으로 애플리케이션은 응답이 완료될 때까지 변경을 지연할 수 있습니다. 그러나 이벤트 처리기가 입력 패널을 실행하는 시간은 사용자에게 액세스할 수 없게 되고 중단된 것처럼 보일 수 있으므로 이벤트 처리기가 잘 수행되는 것이 중요합니다. 그러나 애플리케이션에서 이벤트를 방지하거나 취소할 수 없습니다. 모든 이벤트 매개 변수는 읽기 전용입니다. 다음은 TextInputPanel 개체의 6개 이벤트 쌍에 대한 설명입니다.

  • InPlaceStateChanging / InPlaceStateChanged – 현재 위치 상태가 가리키기에서 확장됨 또는 그 반대로 전환되었음을 알 수 있습니다. 매개 변수는 새 상태와 이전 현재 위치 상태입니다. CurrentInPlaceState 속성 값의 변경과 일치합니다.
  • InPlaceSizeChanging / InPlaceSizeChanged – In-Place 입력 패널 크기가 변경되거나 사용자 크기 조정, 자동 증가 또는 입력 영역 변경으로 인해 변경된 시기를 나타냅니다. 매개 변수는 새 경계 사각형과 이전 경계 사각형입니다. InPlaceBoundingRectangle 속성 값의 변경과 일치합니다.
  • InputAreaChanging / InputAreaChanged – 입력 패널 입력 영역이 변경되거나 쓰기 패드, 문자 패드 또는 키보드의 세 가지 가능한 입력 영역 중 다른 영역으로 변경된 경우를 보고합니다. 매개 변수는 새 입력 영역과 이전 입력 영역입니다. CurrentInputArea 속성의 값 변경과 일치합니다.
  • CorrectionModeChanging / CorrectionModeChanged – 수정 모드가 변경되거나 변경되었다는 알림입니다. 가능한 수정 모드는 표시 안 됨, 사전 삽입, 삽입 후 축소 및 삽입 후 확장입니다. 매개 변수는 새 수정 모드와 이전 수정 모드입니다. CurrentCorrectionMode 속성 값의 변경 내용과 일치합니다.
  • InPlaceVisibilityChanging / InPlaceVisibilityChanged – In-Place 입력 패널 표시 유형이 변경되거나 변경된 시기를 나타냅니다. 매개 변수는 새 표시 유형과 이전 표시 유형입니다. false의 새로운 표시 유형은 In-Place 입력 패널이 열려 있지 않지만 입력 패널이 부동 또는 도킹된 상호 작용 모드에서 표시되는 것을 배제하지 않음을 의미합니다.
  • TextInserting / TextInserted – 텍스트가 삽입될 예정이거나 입력 패널에서 삽입된 시기를 나타냅니다. 매개 변수는 각각 삽입을 구성하는 잉크 및 텍스트 줄을 포함하는 InkDisp 개체의 배열입니다. 이 이벤트에 대한 자세한 내용은 다음 섹션을 참조하세요.

이러한 이벤트는 애플리케이션에 입력 패널의 변경 내용에 대한 필수 정보를 제공하고 그에 따라 대응할 수 있도록 합니다. 다시 입력 패널 이벤트 모델의 변경은 애플리케이션과 입력 패널 간의 상호 작용을 개선하기 위한 한 걸음을 나타냅니다.

입력 패널에 입력된 잉크 및 텍스트 수집 지원

마지막으로 TextInputPanel 개체의 매우 강력한 새로운 기능 중 하나는 텍스트가 애플리케이션에 삽입될 때 입력 패널을 통해 입력 패널을 통해 입력된 텍스트의 잉크 개체를 가져오는 기능입니다. 변경 내용 추적 및 레코드 보관을 위해 자주 요청된 기능입니다. 또한 애플리케이션은 정적 요소 또는 사용자 지정 수동 입력 표면으로 UI에서 잉크를 사용할 수 있습니다.

입력 패널을 통해 입력된 텍스트에 대한 InkDisp 개체를 받으려면 애플리케이션이 TextInputPanel 개체에 의해 생성된 TextInserting 또는 TextInserted 이벤트를 수신하도록 등록해야 합니다. TextInserting 이벤트는 입력 패널에서 애플리케이션으로 텍스트를 삽입하기 직전에 발생하며 모든 이벤트 처리기가 완료될 때까지 텍스트가 삽입되지 않습니다. TextInserted 이벤트는 테스트가 삽입된 직후에 발생합니다. TextInsertingTextInserted 이벤트에 대한 유일한 매개 변수는 입력 패널에서 삽입된 각 텍스트 줄에 대해 하나의 InkDisp 개체를 포함하는 InkDisp 개체의 배열입니다. 참고: 이벤트 처리기가 실행되는 동안 입력 패널이 비활성 상태이며 사용자에게 걸려 있는 것처럼 보일 수 있으므로 이러한 이벤트 처리기를 경량으로 만들고 신속하게 실행되도록 하는 것이 중요합니다. 또한 애플리케이션은 이와 관련된 성능 비용이 있으므로 정보에 대한 특정 사용이 없는 한 이 이벤트에 대한 처리기를 만들어서는 안 됩니다. 입력 패널은 데이터를 요청하는 애플리케이션이 있는 경우에만 잉크 데이터를 마샬링합니다. 그렇지 않으면 입력 패널에서 이 비용이 많이 드는 작업을 건너뛸 수 있습니다. TextInsertingTextInserted 이벤트의 매개 변수는 읽기 전용이므로 애플리케이션이 삽입된 텍스트를 애플리케이션에 삽입하기 전에 변경할 수 없습니다.

이 새로운 기능으로 애플리케이션이 수행할 수 있는 작업에 대한 가능성은 광범위하며 사용하기가 더 간단할 수 없습니다. 입력 패널을 통해 입력된 인식된 텍스트와 잉크를 애플리케이션에서 수집하도록 허용하는 것은 Windows Vista에서 입력 패널의 개발자 스토리가 개선되는 또 다른 방법입니다.

결론

전반적으로 Windows Vista에서 TextInputPanel 개체가 도입되어 태블릿 PC 입력 패널의 프로그래밍 기능 스토리가 크게 향상되었습니다. 애플리케이션 개발자는 TextInputPanel 개체를 사용하여 이전 릴리스의 상태 입력 패널에 대한 제어 및 자세한 정보를 제공합니다. 따라서 새 태블릿 PC 애플리케이션을 빌드하거나 기존 애플리케이션을 업데이트하는 애플리케이션 개발자는 현재 사용되지 않는 PenInputPanel 개체 대신 TextInputPanel 개체를 사용하는 것이 좋습니다. 또한 입력 패널 및 입력 패널 아이콘의 절대 위치 지정과 같은 새로운 기능에 대한 지원과 입력 패널을 통해 입력된 인식기 텍스트와 잉크를 모두 수신하는 애플리케이션 기능을 통해 새로운 애플리케이션 기능과 시나리오를 사용할 수 있습니다. 이러한 기능 및 기타 여러 기능이 포함되는 것은 개발자 피드백에 대한 직접적인 응답이며, 태블릿 PC 애플리케이션과 입력 패널의 완전한 통합을 향한 첫 번째 단계를 표시합니다. 궁극적으로 태블릿 PC 애플리케이션 기능을 확장하는 것은 애플리케이션 개발자와 태블릿 PC 플랫폼 모두에게 큰 승리입니다.