Wyłącz RealTimeStylus dla aplikacji WPFDisable the RealTimeStylus for WPF Applications

Windows Presentation Foundation (WPF) zawiera wbudowaną obsługą przetwarzania wprowadzania dotykowego systemu Windows 7. Obsługę jest dostarczany za pośrednictwem wprowadzania danych w czasie rzeczywistym piórem platformy tablet jako OnStylusDown, OnStylusUp, i OnStylusMove zdarzenia.Windows Presentation Foundation (WPF) has built in support for processing Windows 7 touch input.The support comes through the tablet platform’s real-time stylus input as OnStylusDown, OnStylusUp, and OnStylusMove events. Windows 7 także wielodotyku danych wejściowych jako komunikaty okna Win32 WM_TOUCH.Windows 7 also provides multi-touch input as Win32 WM_TOUCH window messages. Te dwa interfejsy API wzajemnie się wykluczają na tym samym HWND.These two APIs are mutually exclusive on the same HWND. Wprowadzania dotykowego włączenie za pośrednictwem platformy tablet (wartość domyślna dla aplikacji WPF) wyłącza WM_TOUCH wiadomości.Enabling touch input via the tablet platform (the default for WPF applications) disables WM_TOUCH messages. W związku z tym na potrzeby odbierania komunikatów touch z okna WPF WM_TOUCH, należy wyłączyć obsługę wbudowanych Pióro na platformie WPF.As a result, to use WM_TOUCH to receive touch messages from a WPF window, you must disable the built-in stylus support in WPF. Ma to zastosowanie w przypadku takich jak obsługującym składnik, który używa WM_TOUCH okna WPF.This is applicable in a scenario such as a WPF window hosting a component that uses WM_TOUCH.

Aby wyłączyć nasłuchiwanie wprowadzania danych piórem WPF, usuń wszelkie wsparcie tablet dodane przez okno WPF.To disable WPF listening to stylus input, remove any tablet support added by the WPF window.

PrzykładExample

Następujący przykładowy kod przedstawia sposób usuwania domyślnego typu tablet platformy obsługiwane przy użyciu odbicia.The following sample code shows how to remove the default tablet platform support by using reflection.

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 });  
            }                  
        }  
  
    }  
}  

Zobacz teżSee Also

Przechwytywanie danych wejściowych z pisakaIntercepting Input from the Stylus