TextInputPanel для пользователей PenInputPanel
Выпуск Windows Vista включает в себя новый объект программирования для панели ввода планшетного компьютера, который предоставляет новый диапазон возможностей для использования приложения и взаимодействия с панелью ввода. Впервые разработчики приложений могут разместить значок In-Place панели ввода в соответствии с текстовым полем или поместить его в углу области рукописного ввода клиента, чтобы предоставить доступ к альтернативному режиму ввода. Разработчики имеют тот же контроль над размещением после развертывания значка панели ввода в In-Place панели ввода. Это позволяет гарантировать, что панель ввода In-Place никогда не перекрывается с ключевыми элементами пользовательского интерфейса в макете приложения или даже перенаполняет пользовательский интерфейс приложения, чтобы освободить место для панели ввода In-Place, а затем поместить ее в зарезервированное пространство. Новая модель программирования включает поддержку не только позиционирования, но и область ввода, режим коррекции и многие другие свойства панели ввода, чтобы сделать ввод текста в приложении. Наконец, впервые приложение может получить рукописный ввод пользователя в дополнение к распознаваемого текста, связанного с вставками текста на панели ввода. Это позволяет создавать новые сценарии приложений, включая рукописный ввод в журналах отслеживания изменений и позволяя пользователям изменять или просматривать рукописный ввод в приложении. Эти новые возможности программирования являются прямым результатом отзывов, полученных корпорацией Майкрософт о истории разработчика панели ввода, и представляют собой первый шаг к более тесной интеграции приложений и панели ввода.
Чтобы предоставить эту расширенную модель программирования панели ввода, существующий механизм программного взаимодействия с панелью ввода, объект PenInputPanel , является устаревшим и заменен новым объектом TextInputPanel . Помимо предоставления новых возможностей программирования, объект TextInputPanel также предоставляет близкие ко всем программным возможностям объекта PenInputPanel . Объект TextInputPanel входит в комплект разработчиков программного обеспечения Windows Vista и Windows Vista. Объект TextInputPanel совместим только с панелью ввода Windows Vista и не может использоваться с Windows XP с пакетом обновления 2 (SP2) или более старой панелью ввода. Приложения, которые ранее были написаны для использования объекта PenInputPanel , будут продолжать работать с панелью ввода Windows Vista, однако при написании новых приложений для планшетов разработчикам настоятельно рекомендуется использовать новый объект TextInputPanel вместо устаревшего объекта PenInputPanel .
Каждый из параметров программирования объекта TextInputPanel можно применять для каждого текстового поля. Это достигается путем присоединения экземпляра объекта TextInputPanel с помощью свойства AttachedEditWindow . Свойству следует задать дескриптор окна для текстового поля.
Примечание
: некоторые свойства и методы, описанные ниже, применяются, если панель ввода находится в режиме взаимодействия на месте, а не когда панель ввода находится в режиме плавающего или закрепленного взаимодействия. Режим взаимодействия на месте — это поведение панели ввода, когда размещение фокуса в редактируемом поле приводит к отображению значка панели ввода рядом с полем, а нажатие значка панели ввода приводит к расширению панели ввода. Методы и свойства, которые применяются только в том случае, если панель ввода находится в режиме взаимодействия на месте, содержат InPlace в имени метода или свойства.
Управление значком панели ввода и видимостью панели ввода
Первым аспектом панели ввода, над которой разработчики приложений имеют больше контроля в Windows Vista, является ее видимость. С помощью объекта TextInputPanel можно управлять видимостью панели ввода In-Place тремя способами. С помощью сочетания свойств и методов приложение может определить, отображается ли панель ввода In-Place, когда отображается панель ввода In-Place и отображается ли она сначала как значок панели ввода или сразу же отображается развернутой. Объединив эти методы управления видимостью с методами управления положением, описанными в следующем разделе, разработчики приложений могут создавать пользовательские точки запуска и настраиваемые рабочие потоки с помощью панели ввода In-Place в приложении.
Примечание
Свойства и методы, описанные в этом разделе, применяются только в том случае, если панель ввода находится в режиме In-Place взаимодействия.
Во-первых, можно предотвратить появление панели ввода In-Place и значка панели ввода, установив для свойства InPlaceVisibleOnFocus значение false. Если присвоить ему значение true, возвращается системное значение по умолчанию , если оно не было отключено пользователем или групповая политика. Этот параметр полезен для приложений, которые включают пользовательские решения для ввода текста в качестве альтернативы панели ввода.
Во-вторых, задав свойство DefaultInPlaceState , разработчик может указать, в каком состоянии на месте, как указано в перечислении InPlaceState , In-Place Панель ввода отображается в, когда фокус помещается в текстовое поле. Системное значение по умолчанию заключается в том, чтобы панель ввода In-Place отображалась в состоянии при наведении указателя мыши, если только панель ввода не отображается в развернутом состоянии. В этом случае панель ввода остается развернутой. Если задать для свойства DefaultInPlaceStateзначение InPlaceState_Expanded , панель ввода In-Place всегда будет отображаться развернутой, а не значок панели ввода, а затем требуется коснуться значка панели ввода перед развертыванием панели ввода. Два других варианта — InPlaceState_Auto, что является поведением системы по умолчанию и InPlaceState_HoverTarget которое всегда вызывает появление значка панели ввода. Возможность указать, что панель ввода In-Place всегда отображается развернутой, является новой в объекте TextInputPanel и недоступна с помощью объекта PenInputPanel . На следующем рисунке показан значок панели ввода In-Place и развернутые состояния панели.
Помимо возможности управлять состоянием на месте, разработчик также может определить состояние на месте в данный момент, получив свойство CurrentInPlaceState . Значение CurrentInPlaceState равно DefaultInPlaceState, если панель ввода не отображается, за исключением случаев, когда DefaultInPlaceStateInPlaceState_Auto в этом случае CurrentInPlaceState становится InPlaceState_HoverTarget. События InPlaceVisibilityChanging / InPlaceVisibilityChanged можно использовать для отслеживания состояния видимости панели ввода In-Place.
Наконец, разработчик может принудительно скрыть или отобразить панель ввода In-Place с помощью метода SetInPlaceVisibility . Если разработчик ранее задал свойство DefaultInPlaceState , панель ввода отображается в указанном состоянии при принудительном отображении. Приложению разрешено скрывать или отображать панель ввода In-Place только в том случае, если фокус находится в окне, к которому присоединен объект TextInputPanel , и если у пользователя нет открытой панели ввода в другом режиме взаимодействия, например закрепленном или плавающем. Возможность принудительного скрытия или отображения панели ввода In-Place также является новой в объекте TextInputPanel и недоступна с помощью объекта PenInputPanel .
Эти параметры позволяют разработчикам приложений точно контролировать, когда и в каком состоянии отображается панель ввода In-Place. Настраивая состояние на месте по умолчанию и контролируя видимость на месте независимо от изменений фокуса, разработчик приложения может создать пользовательский рабочий поток, когда панель ввода реагирует либо на параметры приложения, либо на ввод данных пользователем в приложение.
Абсолютное положение значка панели ввода и панели ввода
Возможно, наиболее привлекательной новой функцией в объекте TextInputPanel является абсолютное позиционирование In-Place панели ввода. Благодаря этой новой возможности разработчик приложения может гарантировать, что панель ввода In-Place не перекрывается с одним или несколькими ключевыми визуальными элементами в макете приложения. С помощью объекта PenInputPanel можно было разместить панель ввода In-Place относительно текстового поля на основе смещения, однако панель ввода по-прежнему настраивается для сохранения на экране. Впервые в Vista приложение может разместить панель ввода In-Place в абсолютном положении с помощью экранных координат. Кроме того, ответственность за сохранение панели ввода на экране возлагается на разработчика приложения, что устраняет вероятность того, что панель ввода автоматически и, казалось бы, случайным образом переместится.
Примечание
Свойства и методы, описанные в этом разделе, применяются только в том случае, если панель ввода находится в режиме In-Place взаимодействия.
Два основных метода, необходимых для абсолютного позиционирования панели ввода In-Place: SetInPlacePosition и SetInPlaceHoverTargetPosition. Первый используется для указания расположения панели ввода 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 по умолчанию отображаться над или под текстовым полем ввода. Таким образом можно избежать перекрывающихся элементов в макете приложения более слабо контролируемым способом. Для этого приложение задает для preferredInPlaceDirectionзначение InPlaceDirection_Bottom или InPlaceDirection_Top. Свойство является предпочтениями, так как панель ввода In-Place переопределяет предпочтения, заданные приложением, если это необходимо для сохранения панели ввода на экране. Система по умолчанию размещает панель ввода In-Place под текстовым полем по возможности, а в противном случае — над ним. Если задать для PreferredInPlaceDirectionзначение InPlaceDirection_Auto , система по умолчанию восстанавливается.
Вместе свойства, методы и события объекта TextInputPanel предоставляют разработчикам необходимый контроль над панелью ввода In-Place, чтобы иметь возможность ловко разместить панель ввода In-Place и значок панели ввода в макете приложения, чтобы они не нарушали поток макета и в некоторых случаях могли казаться интегрированными. Этот новый уровень управления является большой победой для разработки приложений для планшетов.
Доступ к трем областям панели ввода: клавиатуре, клавиатуре и клавиатуре
Панель ввода содержит три области ввода: клавиатуру, клавиатуру и клавиатуру. С помощью объекта TextInputPanel приложение может указать область ввода по умолчанию, которая отображается пользователю при открытии панели ввода. Main причиной этого приложения является связывание области ввода с типом входных данных определенного поля. Например, клавиатура, вероятно, лучше всего подходит для заполнения поля примечаний, но клавиатура может быть удобнее для ввода серийного номера продукта, содержащего как цифры, так и буквы. Чтобы указать область ввода по умолчанию, приложение присваивает свойству DefaultInputArea одну из трех входных областей, как определено перечислением PanelInputArea . На следующем рисунке показаны три области ввода.
Системной областью ввода по умолчанию является клавиатура для английского, французского, немецкого, испанского, итальянского, португальского, голландского и всех других языков ввода на латинице. Для восточноазиатских языков ввода, включая японский, китайский и корейский, область ввода по умолчанию — символьная панель. Однако при изменении области ввода пользователь переопределяет область ввода по умолчанию для текущего языка ввода и сохраняется в качестве нового значения по умолчанию для этого языка ввода. Клавиатура является областью ввода по умолчанию для полей паролей, независимо от языка ввода, если только безопасность пароля не была отключена пользователем или групповой политикой. Во всех случаях установка области панели ввода по умолчанию программно переопределяет системное значение по умолчанию, если только текущее поле не является полем пароля или распознаватель рукописного ввода для текущего языка ввода не поддерживает выбранную программно область ввода. При установке свойства DefaultInputAreaзначения InPlaceDirection_Auto восстанавливается системные параметры по умолчанию.
Независимо от того, была ли задана область панели ввода по умолчанию программным способом, пользователь может изменить текущую область панели ввода после открытия панели ввода. После изменения текущей области ввода выбор сохраняется до тех пор, пока панель ввода не закроется или пользователь снова не изменит выбор. После закрытия и повторного открытия панели ввода снова отображается заданная программным способом область ввода по умолчанию.
Так как текущая область панели ввода может отличаться от области панели ввода по умолчанию, приложение может запросить свойство CurrentInputArea , чтобы определить, какая область входных данных отображается в данный момент. Если панель ввода в настоящее время не отображается, текущая область ввода равна области ввода по умолчанию. Свойство CurrentInputArea никогда не равно PanelInputArea_Auto. Если значение DefaultInputArea равно PanelInputArea_Auto, значение CurrentInputArea равно последней отображаемой области ввода или системное значение по умолчанию для текущего языка ввода, если панель ввода никогда не отображалась.
Основное различие между поддержкой области ввода, которая находится в объекте PenInputPanel и объекте TextInputPanel , заключается в том, что приложение теперь имеет возможность задать область ввода по умолчанию для символьной панели, а также клавиатуры и клавиатуры.
Используя приведенные выше свойства, приложение может управлять областью ввода панели ввода, отображаемой в разных полях, и оптимизировать взаимодействие с вводом текста пользователем. Кроме того, приложение может поддерживать осведомленность о текущей области ввода и принимать условные решения в соответствии с тем, какая область ввода лучше всего подходит для текущей задачи пользователя.
Подробные сведения о режиме взаимодействия панели ввода
Помимо возможности обнаружения текущей области ввода панели ввода, можно также определить текущий режим взаимодействия: "На месте", "Закреплено" или "Плавающий". Для приложения может быть важно знать текущий режим взаимодействия, чтобы понять, как пользователь взаимодействует с приложением, или потому, что некоторые методы и свойства объекта TextInputPanel применяются только к режиму взаимодействия In-Place. Например, в приложении переполняет существующие элементы пользовательского интерфейса, а затем помещает панель ввода In-Place на пустую область в пользовательских интерфейсах, должна проверка, чтобы убедиться, что текущий режим взаимодействия установлен на месте перед внесением корректировок.
Свойство CurrentInteractionMode объекта TextInputPanel сохраняет текущий режим взаимодействия, выбранный пользователем. Возможные режимы определяются перечислением InteractionMode следующим образом:
InteractionMode_InPlace — в режиме взаимодействия In-Place рядом с полем ввода текста, которое сейчас находится в фокусе. По умолчанию значок панели ввода In-Place отображается при добавлении точки вставки в текстовое поле ввода. Нажатие значка панели ввода приводит к развертыванию панели ввода. Панель ввода In-Place отображается только в том случае, если точка вставки находится в редактируемом поле.
InteractionMode_Floating — режим плавающего взаимодействия аналогичен режиму взаимодействия InPlace, за исключением того, что он не привязан к точке вставки. Чтобы открыть плавающую панель ввода, коснитесь вкладки Панель ввода, которая по умолчанию отображается в левой части экрана. Пользователь может перетаскивать и перемещать вкладки "Плавающая панель ввода" и "Панель ввода". В плавающем режиме размещение панели ввода и управление ими полностью принадлежит пользователю.
InteractionMode_DockedTop — в режиме Docked-Top взаимодействия панель ввода отображается в верхней части экрана, а размер активного рабочего стола изменяется таким образом, чтобы панель ввода не перекрывалась с другими окнами или элементами пользовательского интерфейса. В закрепленном режиме панель ввода нельзя перетаскивать или перемещать.
InteractionMode_DockedBottom — режим взаимодействия Docked-Bottom совпадает с режимом Docked-Top, за исключением того, что в нижней части экрана отображается панель ввода.
Если панель ввода не отображается, текущий режим взаимодействия находится на месте.
Публикация текущей модели взаимодействия — это еще один способ, с помощью которого объект TextInputPanel предоставляет больше сведений о состоянии панели ввода, чем в любой предыдущей версии.
Подробные сведения о режиме коррекции панели ввода
Последний аспект панели ввода, который предоставляет объект TextInputPanel подробные сведения и управление ими, — это режим коррекции. Знание режима коррекции помогает приложениям определить текущий размер панели ввода. Управление расширением исправлений после вставки в приложении является одним из способов настройки возможности исправления в приложении.
Существует два основных режима, в которых может отображаться расческа коррекции: до вставки и после вставки. Расческа исправления перед вставками используется для исправления текста перед его вставками в приложение. Он активируется нажатием на ожидающий текст, который отображается под базовым показателем на панели записи при вводе пользовательских рукописных фрагментов. Расческа после вставки используется для исправления текста после его вставки в приложение. Он активируется путем помещения точки вставки в или выделения текста, который был вставлен ранее. Помимо двух основных режимов, существует несколько вариантов того, как может выглядеть расческа после вставки. Во-первых, она может отображаться над или под панелью ввода, а затем может отображаться свернутой или развернутой. В свернутом состоянии в расческе после вставки отображается только список альтернативных вариантов. В развернутом состоянии он включает как варианты, так и область для перезаписи слова.
Свойство CurrentCorrectionMode позволяет приложению определить текущую конфигурацию расчески коррекции. Возможные значения этого свойства, определенные перечислениями CorrectionMode : NotVisible, PreInsertion, PostInsertionCollapsed и PostInsertionExpanded. Если панель ввода или запятая не отображаются, currentCorrectionMode имеет значение NotVisible.
По умолчанию система отображает расческу после вставки, развернутую при выборе исправляемого текста, и показывает, что она свернута, когда точка вставки помещается в исправляемый текст. Приложение может указать, где расческа после вставки всегда должна отображаться в развернутом виде, задав свойству ExpandPostInsertionCorrection значение true. Системное значение по умолчанию — false. Если свойство ExpandPostInsertionCorrection используется в сочетании с интерфейсом IHandWrittenTextInsertion , разработчик приложения может с минимальными затратами добавить поддержку исправления в приложения, которые не получат его автоматически.
Отслеживание и управление состоянием коррекции панели ввода является одной из многих новых функций объекта TextInputPanel , которые делают более тесной интеграцию панели ввода и приложений.
Уведомление о событии до и после возникновения события
Еще одним аспектом программирования панели ввода, который значительно улучшен в объекте TextInputPanel , является модель событий. Теперь вместо того, чтобы создавать только события, сигналивы об изменении состояния панели ввода после изменения, существуют отдельные события, отправляемые до и после изменения. События, сигналившие о начале события, содержат команды текущего времени, такие как "Изменение" или "Вставка", а события, сигналившие о завершении события, содержат команды в прошлом времени, такие как "Changed" или "Inserted".
Эта модель событий позволяет приложению реагировать на изменения до или по мере его возникновения. Панель ввода не может продолжить изменение или возобновить работу после изменения до тех пор, пока не будут завершены обработчики событий для всех событий. Эти события являются синхронными, и таким образом приложение может отложить изменение до завершения реагирования. Однако время, когда обработчик событий выполняет панель ввода, становится недоступным для пользователя и может зависать, поэтому важно, чтобы обработчик событий хорошо выполнял работу. Однако приложение не может предотвратить или отменить событие. Все параметры события доступны только для чтения. Ниже приведено описание шести пар событий объекта TextInputPanel :
- 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 — возможность получить объект рукописного ввода для текста, введенного через панель ввода, из панели ввода во время вставки текста в приложение. Эта функция часто запрашивается для отслеживания изменений и храня записи. Это также позволяет приложениям использовать рукописный ввод в пользовательском интерфейсе в качестве статического элемента или с настраиваемой областью рукописного ввода.
Чтобы получить объект InkDisp для текста, введенного через панель ввода, приложение должно зарегистрироваться для получения событий TextInserting или TextInserted , созданных объектом TextInputPanel . Событие TextInserting запускается непосредственно перед вставкой текста из панели ввода в приложение, и текст не вставляется до тех пор, пока не будут завершены все обработчики событий. Событие TextInserted срабатывает сразу после вставки теста. Единственным параметром для событий TextInserting и TextInserted является массив объектов InkDisp , который включает один объект InkDisp для каждой строки текста, вставленного на панели ввода. Примечание. Панель ввода неактивна во время выполнения обработчиков событий и может отображаться как зависающая для пользователя, поэтому важно сделать эти обработчики событий более легкими и убедиться, что они выполняются быстро. Кроме того, приложение не должно создавать обработчик для этого события, если оно не использует сведения, так как это связано с затратами на производительность. Панель ввода маршалирует данные рукописного ввода, только если приложение запрашивает данные. В противном случае панель ввода может пропустить эту дорогостоящую операцию. Параметры событий TextInserting и TextInserted доступны только для чтения. Это означает, что приложения не могут изменять вставленный текст до его вставки в приложение.
Возможности приложений с этой новой функциональностью широки, и они не могут быть проще в использовании. Разрешить сбор распознанного текста и рукописного ввода на панели ввода приложениями — это еще один способ улучшения истории разработчика панели ввода в Windows Vista.
Заключение
В целом, история программирования для панели ввода планшетного компьютера значительно улучшилась благодаря внедрению объекта TextInputPanel в Windows Vista. С помощью объекта TextInputPanel разработчики приложений имеют больший контроль и дополнительные сведения о панели ввода состояния в предыдущем выпуске. В результате разработчикам приложений, которые создают новые приложения для планшетных компьютеров или обновляют существующие приложения, настоятельно рекомендуется использовать объект TextInputPanel вместо устаревшего объекта PenInputPanel . Кроме того, поддержка новых функций, таких как абсолютное расположение панели ввода и значка панели ввода, а также возможность приложения получать как текст распознавателя, так и рукописный ввод с помощью панели ввода, обеспечивают новые функции и сценарии приложения. Включение этих функций и некоторых других функций является прямым ответом на отзывы разработчиков и знаменует собой первые шаги на пути к полной интеграции панели ввода с приложениями планшетного пк. В конечном счете, расширение функциональных возможностей приложения планшетного компьютера является большой победой как для разработчиков приложений, так и для платформы планшетных пк.