none
VC++アプリからTablet PC 入力パネルを使用する方法について RRS feed

  • 質問

  • 現在、Tablet PC 入力パネル を使用したアプリケーションの開発を行っております。

    そこで、Visual C++ で作成したアプリケーションから
      1. Tablet PC 入力パネル を起動する方法
      2. 表示位置を調整する方法
      3. 終了する方法
    をご教授いただければと、存じます。

      開発環境:Visual Studio2005 SP1
      開発言語:Visual C++、MFC
      開発環境のOS:Windows7、Windows XP

    また、アプリケーションをリリースした場合、Tablet PC 入力パネル を
    使用するうえで必要なモジュールがございましたら、あわせてご教授いただければと存じます。
    現状、Windows XPで使用する場合は Tablet PC SDK が必要と認識しております。
    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20039


    以下、当方で確認した内容を列挙します。

    ・CreateProcess()でTablet PC 入力パネルを起動できそうでしたが、
      アプリケーションを「管理者として実行」していないとできませんでした。
      アプリケーションは通常起動が望ましく、「管理者として実行」では起動したくありません。
      ShellExcuteで権限をつけて実行した場合も、権限の昇格を確認するメッセージボックスが
      表示されるので、望ましくないです。

    ・FindWindow(_TEXT("IPTip_Main_Window"), NULL)でTablet PC 入力パネル
      のウィンドウハンドルは取れましたが、SetWindowPos()、MoveWindow()で
      座標を指定しても、移動しませんでした。

    ・Microsoft.Ink.TextInputの、TextInputPanel クラスを使用するように思われましたが、
      Windows7の場合、Program Files\Common Files\microsoft shared\ink フォルダには
      Microsoft.Ink.dll がありますが、libファイルがありません。
      また、MSDN等に 名前空間 は記述されていますが、インクルードファイルの
      記述はありませんでした。

      C++でメソッドは用意されているように見受けられましたが、C++/CLI や WPFでの開発で
      使用でき、Visual C++での開発では使用できないのでしょうか?

    以上、よろしくお願いいたします。 

    2012年3月19日 7:25

回答

  • Microsoft.Ink.TextInputの、TextInputPanel クラスを使用するように思われましたが、  Windows7の場合、Program Files\Common Files\microsoft shared\ink フォルダにはMicrosoft.Ink.dll がありますが、libファイルがありません。  また、MSDN等に 名前空間 は記述されていますが、インクルードファイルの  記述はありませんでした。

      C++でメソッドは用意されているように見受けられましたが、C++/CLI や WPFでの開発で使用でき、Visual C++での開発では使用できないのでしょうか?

    そのDLLは拡張子はDLLですがネイティブのDLLではなく、.NETのアセンブリなので、ネイティブのC++から直接扱うのは困難です。またMicrosoft::Ink::TextInput::TextInputPanelも、.NETのクラスです。

    同等の機能をネイティブのC++からアクセスするには、COMのITextInputPanelインターフェイスを使うことになるでしょう。具体的には Tablet PC Development Guide をご参照ください。リファレンスおよびサンプルが存在しています。

    // ただし私はタブレットPCを使ったことがないので、本当にこのインターフェイスで要求を実現できるかどうかは存じません。

    • 回答の候補に設定 山本春海 2012年3月30日 9:13
    • 回答としてマーク 山本春海 2012年4月2日 8:23
    2012年3月19日 7:50

すべての返信

  • Microsoft.Ink.TextInputの、TextInputPanel クラスを使用するように思われましたが、  Windows7の場合、Program Files\Common Files\microsoft shared\ink フォルダにはMicrosoft.Ink.dll がありますが、libファイルがありません。  また、MSDN等に 名前空間 は記述されていますが、インクルードファイルの  記述はありませんでした。

      C++でメソッドは用意されているように見受けられましたが、C++/CLI や WPFでの開発で使用でき、Visual C++での開発では使用できないのでしょうか?

    そのDLLは拡張子はDLLですがネイティブのDLLではなく、.NETのアセンブリなので、ネイティブのC++から直接扱うのは困難です。またMicrosoft::Ink::TextInput::TextInputPanelも、.NETのクラスです。

    同等の機能をネイティブのC++からアクセスするには、COMのITextInputPanelインターフェイスを使うことになるでしょう。具体的には Tablet PC Development Guide をご参照ください。リファレンスおよびサンプルが存在しています。

    // ただし私はタブレットPCを使ったことがないので、本当にこのインターフェイスで要求を実現できるかどうかは存じません。

    • 回答の候補に設定 山本春海 2012年3月30日 9:13
    • 回答としてマーク 山本春海 2012年4月2日 8:23
    2012年3月19日 7:50
  • こんにちは、AF_Nakai さん。
     
    フォーラムのご利用ありがとうございます。オペレーターの山本です。
    しばらく時間が経ちましたが、その後いかがでしょうか。

    参考になる情報をいただいているかと思われましたので、勝手ながら私のほうで一旦回答としてマークさせていただきました。
    Hongliang さん、情報ありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたします。
    _____________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年4月2日 8:23