Show / Hide Table of Contents

Отключение объекта RealTimeStylus для WPF-приложений

Windows Presentation Foundation (WPF) обеспечивает встроенную поддержку для обработки сенсорного ввода Windows 7. Поддержка проходит по в режиме реального времени платформой планшетного пера как OnStylusDown, OnStylusUp, и OnStylusMove события. Windows 7 также предоставляет мультисенсорного ввода, как окно сообщения Win32 WM_TOUCH. Эти два API являются взаимно исключают друг друга на одном HWND. Включение сенсорного ввода с помощью этой платформы tablet (по умолчанию для приложений WPF) отключает сообщения WM_TOUCH. Таким образом Чтобы использовать WM_TOUCH для получения сенсорных сообщений из окна WPF, необходимо отключить встроенную поддержку пера в WPF. Это применимо в сценарии, такие как окно WPF, компонент, который использует WM_TOUCH.

Чтобы отключить прослушивание ввод с помощью пера WPF, удалите всю поддержку планшета, добавленные в окне WPF.

Пример

В следующем примере кода показан способ удаления поддержки платформы планшета по умолчанию с помощью отражения.

public static void DisableWPFTabletSupport()  
{  
    // Get a collection of the tablet devices for this window.    
    TabletDeviceCollection devices = System.Windows.Input.Tablet.TabletDevices;  
  
    if (devices.Count > 0)  
    {     
        // Get the Type of InputManager.  
        Type inputManagerType = typeof(System.Windows.Input.InputManager);  
  
        // Call the StylusLogic method on the InputManager.Current instance.  
        object stylusLogic = inputManagerType.InvokeMember("StylusLogic",  
                    BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,  
                    null, InputManager.Current, null);  
  
        if (stylusLogic != null)  
        {  
            //  Get the type of the stylusLogic returned from the call to StylusLogic.  
            Type stylusLogicType = stylusLogic.GetType();  
  
            // Loop until there are no more devices to remove.  
            while (devices.Count > 0)  
            {  
                // Remove the first tablet device in the devices collection.  
                stylusLogicType.InvokeMember("OnTabletRemoved",  
                        BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,  
                        null, stylusLogic, new object[] { (uint)0 });  
            }                  
        }  
  
    }  
}  

См. также

  • Перехват ввода, осуществляемого пером
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX