C#Win32APIの構造体を扱う
C#からWin32APIの構造体ここではRECTをとりあげますが、
他の構造体も同じように扱うことが出来ます。
直接C#のRectangleを使えたら。。便利なのに。
とは思いましたが、構造体のメモリ配置などの関係により、
直接Rectangleは使えません。
で、新しく構造体を定義して使うのですが、メモリ配置がネックになってきますので、
メモリ配置(レイアウト)を決める属性をつけて構造体を定義します。
詳しくはMSDNを参照のこと。
■LayoutKind 列挙体
http://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.layoutkind(VS.71).aspx
構造体の定義が出来れば後はただ使うだけっと。
コードは以下のようになります。
----------------
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[DllImport("user32.dll")]
public static extern void GetWindowRect(IntPtr hWnd, out RECT wndRect);
----------------
こんな感じ。
.
0 件のコメント:
コメントを投稿