■ WPF 타블렛 지원을 비활성화하는 방법을 보여준다. WPF는 Windows 7 터치 입력 처리를 기본적으로 지원한다. 지원은 OnStylusDown, OnStylusUp 및 OnStylusMove 이벤트와 같은 태블릿 플랫폼의 실시간 스타일러스 입력을 통해 이루어진다. Windows 7은 또한 Win32 WM_TOUCH 창 메시지로 멀티터치 입력을 제공한다. 이 두 API는 동일한 HWND에서 상호 배타적이다. 태블릿 플랫폼(WPF 응용 프로그램의 기본값)을 통해 터치 입력을 활성화하면 WM_TOUCH 메시지가 비활성화된다. 따라서 WM_TOUCH를 사용하여 WPF 창에서 터치 메시지를 받으려면 WPF에서 기본 제공 스타일러스 지원을 비활성화해야 한다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using System.Reflection; using System.Windows.Input; #region WPF 타블렛 지원 비활성화하기 - DisableWPFTabletSupport() /// <summary> /// WPF 타블렛 지원 비활성화하기 /// </summary> public void DisableWPFTabletSupport() { TabletDeviceCollection deviceCollection = Tablet.TabletDevices; if(deviceCollection.Count > 0) { Type inputManagerType = typeof(InputManager); object stylusLogic = inputManagerType.InvokeMember ( "StylusLogic", BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic, null, InputManager.Current, null ); if(stylusLogic != null) { Type stylusLogicType = stylusLogic.GetType(); while(deviceCollection.Count > 0) { stylusLogicType.InvokeMember ( "OnTabletRemoved", BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic, null, stylusLogic, new object[] { (uint)0 } ); } } } } #endregion |