APIをWPFで利用する方法を紹介します。APIの初期化処理やタッチデバイスの列挙、詳細情報の表示を実装します。APIとは、Wacomのマルチタッチデバイスの詳細なデータを取得するために利用するSDKです。APIを利用することで、指とタッチパネルとの接触面の大きさなどを取得することができます。タッチイベントをアプリケーション内のみで完結させ、OS側にタッチイベントを発生させないようにすることで、マウスとタッチを同時に利用することができます。APIを利用するためにインストールが必要なDLL(wacommt.dll)はドライバと一緒にインストールされるので、ドライバ以外をインストールする必要はありません。Desktopを使って作成しています。「WPFアプリケーション」でプロジェクトを作成します。API用の関数定義用に「MTAPI.cs」を作成し、以下の定義を追加します。APIの関数を利用するには、DllImportを利用します。この際に、ポインタはIntPtrに変更し、構造体なども独自に定義する必要があります。APIで利用する定数や構造体を定義します。サンプルのソースコードでは「FeelMultiTouchAPIConst.cs」に追加しています。定数の定義は必須ではありませんが、数値だけでは分かりにくいので定義しています。数が多いので、定数についてはソースコードと以下のサイトを照らしあわせて確認してください。データ構造体と列挙型http://wdnet.jp/library/feelmulti-touch/wacom-feel-multi-touch#5タッチデバイスの情報を表す構造体については以下のように定義しています。APIの関数と直接やり取りを行う構造体は、StructLayoutに「LayoutKind.Sequential」を指定する必要があります。各項目について簡単にまとめましたが、詳しく知りたい方はこちらを参照してください。・Version構造体のバージョン番号です。・DeviceIDタッチデバイスを識別するためのIDです。このIDは接続ごとに変わる可能性があります。・Typeタッチデバイスを識別するための値です。この値をチェックすることで、タッチデバイスがモニタを持っているかを判別することができます。LogicalOriginYタッチデバイスの座標(ピクセル単位)の最小値です。LogicalHeightタッチデバイスの横幅、縦幅(ピクセル単位)です。PhysicalSizeYタッチデバイスの検知領域(mm単位)です。ReportedSizeYタッチデバイスの横幅、縦幅(ネイティブカウント単位)です。ScanSizeYタッチデバイスの横幅、縦幅(スキャンコイル単位)です。・FingerMax同時に認識する指の数です。・BlobMaxBLOB集合内の最大数です。・BlobPointsMaxBLOBを構成するBLOBの最大数です。・CapabilityFlagsタッチデバイスがサポートするデータの種類をビットで表しています。4.ラップ関数の追加IntPtrのままだと使い難いので、私の場合はDllImportした関数を以下のようにラップして利用しています。}関数の引数にポインタを利用する場合、配列や構造体分のメモリを確保したIntPtrを指定する必要があります。確保したメモリは自動的に開放されないので、最後に開放するよう処理をおこないましょう。IntPtr関連の処理は「MemoryUtil.cs」にまとめてありますので、興味がある方はそちらも参照してみてください。画面上には、現在接続されているタッチデバイスをプルダウンで表示し、選択したタッチデバイスの情報をテキストで画面上に表示します。以下の内容をMainWindow.xamlへ記載しています。最後にMainWindow.csでタッチデバイスの詳細表示を行う処理を追加します。}まず、MainWindow()内では、WacomMTInitialize()で初期化を行い、WacomMTGetAttachedDeviceIDs()でタッチデバイスを列挙したものをプルダウンに表示しています。ドライバをインストールしていない場合などにAPIを実行すると例外が発生するため、例外をキャッチしアプリケーションを終了するようにしています。APIの終了処理を行っています。プルダウンの内容が変更されると、devicesBox_SelectionChanged()が呼ばれるので、WacomMTGetDeviceCapabilities()を実行してタッチデバイスの詳細情報を取得して表示しています。以上で実装は終了です。実際に、DTH-2400を接続して実行した場合は以下のような情報が表示されました。サンプルソースはこちらにアップしてありますので、興味のある方は実際に試して頂ければと思います。次回は、タッチ情報を取得する処理について紹介します。坂本智このブログを通じて、ワコム製品に関する技術情報をソースコードなどを交えて提供していきます。ワコム製品に関してのイベントやセミナーなどの情報も時々お伝えしていきます。ワコムTOP※本サイトは、株式会社ワコムと株式会社バサラが共同で運営しています。アイコンのあるリンクは、外部サイトへリンクしています。