none
デバイスコンテキストハンドルを引数に持つ関数をDllImportしたい RRS feed

  • 質問

  • C#のWindowsアプリケーション作成時に,以前にネイティブのC++で作成した関数をDllImportで使用しようと試みております.DllImportの使用法はこちらの記事↓

    http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html

    を参考にしおおよそ理解できたのですが,

    C++においてHDC,やHWndの引数を持つ関数については,C#のコードで呼び出すことができるのでしょうか.どのような型で宣言をすればよいのでしょうか.

    どうかご教示ください.

    2006年9月21日 12:54

回答

  • OS によってサイズが変わる値(ポインタやハンドル)は基本的に System.IntPtr 型を使います。というのはリンクされてる先の対応表からも読みとれると思いますが。

    .NET 2.0 では、SafeHandle クラスあたりから派生させたクラスを作る/使う事で利便性が向上します。一面を分かりやすく説明すると、IDisposable な IntPtr です。ただし、構造体のメンバにするわけにはいかなくなりますが。

    2006年9月21日 13:34
  • ありがとうございます.System.IntPtr の使用で関数の宣言について解決できました.

    "SafeHandle クラスあたりから派生させたクラスを作る/使う"に関しては今後の学習課題とします.

    またつまづいたらどうかよろしくお願いします.

    2006年9月24日 3:20

すべての返信

  • OS によってサイズが変わる値(ポインタやハンドル)は基本的に System.IntPtr 型を使います。というのはリンクされてる先の対応表からも読みとれると思いますが。

    .NET 2.0 では、SafeHandle クラスあたりから派生させたクラスを作る/使う事で利便性が向上します。一面を分かりやすく説明すると、IDisposable な IntPtr です。ただし、構造体のメンバにするわけにはいかなくなりますが。

    2006年9月21日 13:34
  • ありがとうございます.System.IntPtr の使用で関数の宣言について解決できました.

    "SafeHandle クラスあたりから派生させたクラスを作る/使う"に関しては今後の学習課題とします.

    またつまづいたらどうかよろしくお願いします.

    2006年9月24日 3:20