www.pudn.com > MultiMonitor.rar > 说明.txt, change:2011-07-15,size:1357b


目标:用程序实现 复制模式,扩展模式,单显示器模式,及主辅屏切换. 
    (注: 最好是用API,如果有相应显卡厂商提供的SDK来实现也可以的) 
 
目前状态: 
 
用API EnumDisplayDevices,EnumDisplaySettings,ChangeDisplaySettingsEx可以实现部分功能 
 
  A.检查当前模式是复制,扩展,或者单显示器,但是仅对ATI显卡有效. (通过DISPLAY_DEVICE结构体的StateFlags判断) 
 
  B.设置单显示器及在两个显示器间切换.(单显示器是设置其中一个宽高为0,切换显示器是CDS_SET_PRIMARY设置这个标记). 
 
  C.设置扩展模式及设置主显示器.但仅设置了CDS_SET_PRIMARY标记和起点坐标. (扩展是为两个显示器设置不同的起点坐标,主显示器是设置CDS_SET_PRIMARY标记) 
 
 
未解决的问题: 
 
  A.以上所述已经实现的功能仅对ATI显卡有效. 
    原因:因为ATI显卡通过EnumDisplayDevices可枚举到Display1和Display2,这是用EnumDisplaySettings枚举设备状态, 
  用ChangeDisplaySettingsEx设置不同显示器参数的重要的东西. 但NVIDIA显卡只能得到一个Display1. 
  而ChangeDisplaySettingsEx函数第一个参数要是这个设备名\\.\Display1,而不能是进一层的\\.\Display1\\monitor0. 
 
  B.在设置扩展模式的主显示器时,不管你把主显示器设置成哪个显示器,桌面也只在StateFlags有DISPLAY_DEVICE_MULTI_DRIVER的显示器中显示, 
  通过ATI的设置程序可以切换两个显示器的这个标记,但是没找到方法用API设置这个标记. 
 
  C.不能用API设置复制模式(NVIDIA卡),怎样自由设置和切换. 
   
  D.怎样设置或者说改变各个显示器的DISPLAY_DEVICE::StateFlags 
 
具体代码 
ScreenSaveDlg.cpp  line(477)