我想使用平台调用来做一些多显示器的东西。我一直在使用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