Поддержка сенсорного ввода в Windows Vista
Начиная с Windows Vista, технология планшетного ПК поддерживает сенсорный ввод на планшетных компьютерах с дигитайзерами с поддержкой сенсорного ввода. Эта поддержка включает в себя улучшенный пользовательский интерфейс, помогающий в нацеливание на Windows и управление ими при использовании пальца для ввода данных.
Поддержка сенсорного дигитайзера
Ввод с помощью пера и сенсорного ввода не исключаем
Не предполагайте, что ввод с помощью пера и сенсорного ввода является взаимоисключающим в приложениях InkCollector, InkOverlay и RealTimeStylus .
В Windows Vista, когда система распознает перо, она игнорирует сенсорный ввод. То есть сенсорный штрих заканчивается и начинается росчерк пера. Так как это может измениться в будущем, код не должен предполагать, что ввод пера и сенсорного ввода являются взаимоисключающими.
Другие источники сообщений мыши
Существуют и другие источники сообщений мыши, даже если пользователь взаимодействует только с помощью пальца или пера. Источники включают сенсорные панели, а также движения, предназначенные для того, чтобы приложение за многоуровневым окном учитывало, что мышь перемещается над приложением.
Включение и отключение пользовательского интерфейса сенсорного ввода
Вы можете включить или отключить пользовательский интерфейс сенсорного ввода в зависимости от требований приложения. Для этого перехватите сообщения окна операционной системы в процедуре окна и измените сообщение Windows. Переопределите WndProc в приложении, чтобы перехватить эти сообщения. В следующем псевдокоде C# показано, как включить и отключить пользовательский интерфейс сенсорного ввода. В коде также показано использование той же методики для отключения жеста нажатия и удержания. Этот метод также работает для отключения пера.
const int WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS = 716;
const uint SYSTEM_GESTURE_STATUS_NOHOLD = 0x00000001;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON = 0x00000100;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF = 0x00000200;
protected override void WndProc(ref Message msg)
{
switch (msg.Msg)
{
case WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS:
{
uint result = 0;
if (...)
{
result |= SYSTEM_GESTURE_STATUS_NOHOLD;
}
if (...)
{
result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON;
}
if (...)
{
result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF;
}
msg.Result = (IntPtr)result;
}
break;
default:
base.WndProc(ref msg);
break;
}
}
Связанные темы