/// <summary> /// タブレットのオープン /// </summary> /// <param name="hWnd"></param> /// <param name="context"></param> /// <returns></returns> public static IntPtr Open(IntPtr hWnd, WintabLogContext context) { IntPtr hCtx = IntPtr.Zero; try { hCtx = WintabFunctions.WTOpenA(hWnd, ref context, true); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Open : " + ex.Message); } return(hCtx); }
/// <summary> /// デフォルトのコンテキスト情報を取得する /// </summary> /// <param name="options"></param> /// <returns></returns> public static WintabLogContext GetDefaultSystemContext(ECTXOptionValues options) { // パケットのサイズは、指定したビットによって可変となる。 // 全てのビットを指定し、パケットのサイズを固定にする。 uint pktData = (uint)EWintabPacketBit.PK_PKTBITS_ALL; uint pktMode = (uint)EWintabPacketBit.PK_BUTTONS; // デフォルトのコンテキストの取得 WintabLogContext context = new WintabLogContext(); // メモリの確保 IntPtr pContext = WintabMemoryUtility.AllocUnmanagedBuffer(context); try { uint sz = WintabFunctions.WTInfoA((uint)EWTICategoryIndex.WTI_DEFSYSCTX, 0, pContext); context = WintabMemoryUtility.MarshalUnmanagedBuffer <WintabLogContext>(pContext, sz); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("GetDefaultSystemContext : " + ex.Message); throw ex; } finally { // メモリの開放を忘れないこと WintabMemoryUtility.FreeUnmanagedBuffer(pContext); } // パケットメッセージを受信するために指定 context.lcOptions |= (uint)ECTXOptionValues.CXO_MESSAGES; // 指定されたオプション context.lcOptions |= (uint)options; // コンテキストのビット設定 context.lcPktData = pktData; context.lcPktMode = pktMode; context.lcMoveMask = pktData; context.lcBtnUpMask = context.lcBtnDnMask; return(context); }
/// <summary> /// ペンタブレットを初期化します /// </summary> public static void Initialize() { if (WintabManager.IsWintabAvailable() == false || Application.Current.MainWindow == null) { return; } try { WintabLogContext context = WintabManager.GetDefaultSystemContext(ECTXOptionValues.CXO_SYSTEM); context.lcName = "Wintab sample"; // ウインドウハンドルの取得 WindowInteropHelper helper = new WindowInteropHelper(Application.Current.MainWindow); IntPtr hWnd = helper.Handle; // Wintabハンドル IntPtr m_hCtx = IntPtr.Zero; // タブレットの受信開始 m_hCtx = WintabManager.Open(hWnd, context); if (m_hCtx != IntPtr.Zero) { // ウインドウプロシージャをフックする HwndSource source = HwndSource.FromHwnd(helper.Handle); source.AddHook(new HwndSourceHook(WndProc)); } maxPressure = WintabManager.GetDeviceNPressure().axMax; maxZ = WintabManager.GetTabletAxis(EAxisDimension.AXIS_Z).axMax; Enable = WintabManager.IsWintabAvailable(); watchDogTimer.Tick += WatchDogTimer_Tick; watchDogTimer.Start(); } catch (Exception ex) { Console.Write(ex.Message); } }
public static extern IntPtr WTOpenA(IntPtr hWnd, ref WintabLogContext logContext, bool enable);