2010-09-02 75 views
1

我有多个显示器(虚拟+实际),默认情况下我想从我的程序中将其放入克隆/双重模式。有人可以建议我怎么做到这一点?我对这个世界非常陌生:)对于这个基本问题抱歉......甚至任何文档或任何链接都将非常可观。如何制作克隆或扩展模式

/sarbojit

回答

2

要设置克隆显示在Win7,如果有2条路径,这将工作和4种模式

UINT32 cPath=0; //path count 
UINT32 cMode=0; //mode count 
HRESULT hr; 
hr = GetDisplayConfigBufferSizes(QDC_ALL_PATH, &cPath, &cMode); 
std::vector<DISPLAYCONFIG_PATH_INFO> pathArray(cPath); 
std::vector<DISPLAYCONFIG_MODE_INFO> modeArray(cMode); 
hr =QueryDisplayConfig(QDC_ALL_PATHS, &cPath, &pathArray[0], &cMode, &modeArray[0], NULL); 
if(hr != ERROR_SUCCESS) { problem in paradise } 
if(cPath!=2 || cMode != 4) { anything else is too complex or a single display or already cloned } 
// to change resolution also 
// int ix=pathArray[0].sourceInfo.modeInfoIdx; assuming path[0] is primary, it should be 
// modeArray[ix].sourceMode.width = 320;  // :(
// modeArray[ix].sourceMode.hieght = 240;  // :(
pathArray[1].flags |= DISPLAYCONFIG_PATH_ACTIVE; 
pathArray[1].sourceInfo.modeIdx = pathArray[0].sourceInfo.modeIdx; //same source 
pathArray[1].sourceInfo.id = pathArray[0].sourceInfo.id;  //same source 
hr = SetDisplayConfig(cPath, &pathArray[0], cMode, &modeArray[0], SDC_APPLY | SDC_USE_SUPPLIED_DISPLAY_CONFIG | SDC_ALLOW_CHANGE | SDC_SAVE_TO_DATABASE)); 
if(hr != ERROR_SUCCESS) { so close!!! } 
0

如果你恰巧是在Windows XP中,并有可以使用下面的命令行命令

rundll32.exe NvCpl.dll,dtcfg setview 1 clone 

rundll32.exe NvCpl.dll,dtcfg setview 1 dualview 

的NVIDIA显卡,并使用CreateProcess的创建一个子运行该命令的进程。我一直无法让NvAPI在Windows XP上设置克隆或扩展模式,但它似乎在Windows 7上运行良好。