横幅 (width) と 高さ (height) を持つ構造体を戻り値として返す関数ですが、
C#側では構造体のマーシャリングを行い、
System.Drawing.SizeF構造体の形で受け取りたいと思っています。
C#ではこのようなコードになることを期待しています。
static class Hoge
{
[DllImport("hoge.dll")]
public static extern System.Drawing.SizeF getSize();
}
なんという型 (構造体) を返すような設計にすればよいのでしょうか。
こちらの
によると Win32API の RECT構造体 は .NET Framework の System.Drawing.Rectangle構造体 として扱うことができる (マーシャリングされる) らしいのですが、C# に構造体が用意されている場合もある
System.Drawing.SizeF構造体とマーシャリングされるようなWin32APIの構造体はあるのでしょうか。
また、C++の型とC#の型がマーシャリング可能かどうかを調べる術を教えて下さい。
(マイクロソフトのリファレンスなどに書いてあるのでしょうか?)
もしWin32API側で対応している型などが無いのであれば
C#の方で自分で構造体を定義することにします。
ちなみに、Direct2DのD2D1_SIZE_F型か、もしくは
そのメンバ
・float width
・float height
を含む他の型のオブジェクトを生成し、
それを返すようなコードをC++側で書き、
C#側でSystem.Drawing.SizeF型として扱いたいという状況です。