Поддержка сенсорного ввода в 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;
}
}
Связанные разделы