我想使用平臺調用來做一些多顯示器的東西。我一直在使用http://pinvoke.net來啓動我,但我遇到了定義不一致的問題。如何判斷cbSize是否應該在MonitorInfo中爲int或uint?
在MONITORINFO (user32)(和MONITORINFOEX (user32)),大小被定義爲:
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的可用,但我試圖做到這一點使用P/Invoke在Silverlight 5