Desabilitar o RealTimeStylus para aplicativos WPF
O WPF (Windows Presentation Foundation) tem suporte interno para processamento de entrada por toque do Windows 7. O suporte é oferecido por meio da entrada de caneta em tempo real da plataforma do tablet, como eventos OnStylusDown, OnStylusUpe OnStylusMove. O Windows 7 também fornece entrada com vários toques, como as mensagens de janela WM_TOUCH do Win32. Essas duas APIs são mutuamente exclusivas no mesmo HWND. Habilitar a entrada por toque por meio da plataforma tablet (o padrão para aplicativos WPF) desabilita WM_TOUCH mensagens. Como resultado, para usar WM_TOUCH para receber mensagens de toque de uma janela do WPF, você deve desabilitar o suporte à caneta interna no WPF. Isso é aplicável em um cenário como uma janela do WPF que hospeda um componente que usa WM_TOUCH.
Para desativar o recebimento de entrada de caneta pelo WPF, remova qualquer suporte a tablet que tenha sido adicionado pela janela do WPF.
Exemplo
O código de exemplo a seguir mostra como remover o suporte à plataforma de tablet padrão usando reflexão.
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 });
}
}
}
}
Consulte também
.NET Desktop feedback