关于获取多显示器显示模式步骤

关于获取多显示器显示模式方法?
Primary模式:
  可枚举到Display1及Display2,Display1下又可枚举到Monitor0,Monitor1,此时Display1及Monitor0均为DISPLAY_DEVICE_ATTACHED_TO_DESKTOP;
Clone模式:
  可枚举到Display1及Display2,Display1下又可枚举到Monitor0,Monitor1,此时Display1及Monitor0,Monitor1均包含DISPLAY_DEVICE_ATTACHED_TO_DESKTOP;
Extended模式:
  可枚举到Display1及Display2,Display1下又可枚举到Monitor0,Display2下可枚举到Monitor0,且均包含DISPLAY_DEVICE_ATTACHED_TO_DESKTOP;
Projector模式:
  与Primary,Clone模式类似,在Display1下可枚举到Monitor0,Monitor1,但Display1及Monitor1包含DISPLAY_DEVICE_ATTACHED_TO_DESKTOP;
上面Display,Monitor后面的0,1等数字进表明序号。
由此,可以很方便的分辨出模式来。

多显示器可以设置四种模式,主显、副显(投影仪)、扩展模式、复制模式。
我通过学习论坛上的方法,能够获取到扩展模式与复制模式的状态了,但是目前没办法区分主显和副显。
论坛上这个方法说的我感觉不是很明白- -。
求个大神指点下可用的方法。
环境是win7

------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162617(v=vs.85).aspx
查MSDN是Windows程序员必须掌握的技能之一。

------解决方案--------------------
EnumDisplayMonitors(NULL,NULL,EnumMonitor,0);

BOOL CALLBACK EnumMonitor(HMONITOR hMonitor, HDC hDC, LPRECT pRect, LPARAM lParam)
{
MONITORINFO mi;
mi.cbSize = sizeof(mi);
if(GetMonitorInfo(hMonitor,&mi))     //GetMonitorInfo获取多屏幕信息
{
G.m_dispArray.Add(mi.rcWork);          //m_dispArray记录多屏幕的工作区域
G.m_rcMonitorArray.Add(mi.rcMonitor);//m_rcMonitorArray记录多屏幕区域,如果非主显示,即为负

}
------解决方案--------------------
GetSystemMetrics 看看
------解决方案--------------------
还真没研究过这块
------解决方案--------------------
在XP下要想能很准确的知道主副, 得使用显卡对应的SDK中的API的获取.
在Win7下到是要好判断些, 获取配置信息就知道了.