プラットフォームの呼び出しを使用して、いくつかのマルチモニターの処理をしようとしています。私はhttp://pinvoke.netを使い始めましたが、定義が一致しない問題が発生しました。 MONITORINFO (user32)(及びMONITORINFOEX (user32))においてcbSizeがMonitorInfoのintまたはuintである必要があるかどうかを確認するにはどうすればよいですか?
、サイズが次のように定義される。
public int Size;
しかしEnumDisplayMonitors (user32)でのMonitorInfoを使用するサンプルコードでは、我々は以下を参照してください明らか
mi.size = (uint)Marshal.SizeOf(mi);
、これらのいずれかを正しいものではありません。バイトで、
構造のサイズとして定義
typedef struct tagMONITORINFO { DWORD cbSize; RECT rcMonitor; RECT rcWork; DWORD dwFlags; } MONITORINFO, *LPMONITORINFO;
cbSizeのを有する:としてMSDNのドキュメントで
は、MONITORINFOが宣言されます。
GetMonitorInfo関数を呼び出す前に、このメンバーをsizeof(MONITORINFO)に設定してください。そうすることで、関数が渡す構造体の型を決定することができます。
どのように私はそれがint、またはuintであるべきであるかを考えることができますか?
注:私はこのようなもののいくつかはのSystem.Windows.Formsで利用可能です知っているが、私はシルバー5に