Как сделать клон или расширенный режим - PullRequest
1 голос
/ 02 сентября 2010

У меня несколько мониторов (виртуальных + реальных), и по умолчанию я хотел перевести его в клон / двойной режим из моей программы.Кто-нибудь может подсказать, как мне этого добиться?Я очень новичок в этом мире :) извините за этот основной вопрос .... даже любой документ или любая ссылка будет весьма заметным.

Ответы [ 4 ]

2 голосов
/ 26 июля 2011
//Extend
SetDisplayConfig(0, NULL,0, NULL,(SDC_APPLY | SDC_TOPOLOGY_EXTEND));
//Clone
SetDisplayConfig(0, NULL,0, NULL,(SDC_APPLY | SDC_TOPOLOGY_CLONE));

Для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/ff569533%28v=VS.85%29.aspx

2 голосов
/ 13 июня 2012

Чтобы настроить отображение клонов в 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 голосов
/ 18 октября 2012

Если вы используете Windows XP и у вас есть карта NVIDIA, вы можете использовать следующую команду командной строки

rundll32.exe NvCpl.dll,dtcfg setview 1 clone

или

rundll32.exe NvCpl.dll,dtcfg setview 1 dualview

и используйте CreateProcess для создания дочернего процесса, который выполняет эту команду. Мне не удалось настроить NvAPI для настройки клонирования или расширенного режима в Windows XP, но в Windows 7 он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...