2011-07-06 77 views
2

在我的C++ Win32程序中,我想將當前的顯示設置設置爲「擴展」模式。我搜索了一下,發現SetDisplayConfig()是在Windows 7(我在Windows 7上)前進的方式,但現在我堅持如何繼續,因爲MSDN的解釋(鏈接here)很混亂。我對C++和API編程非常陌生,所以我很難理解這一點。如何在Windows 7中使用C++將顯示設置設置爲EXTEND模式?

我非常感謝一些代碼示例和解釋。提前致謝!

回答

5

好吧,我想出了答案。

爲了識別當前配置:

UINT32 PathArraySize = 0; 
UINT32 ModeArraySize = 0; 
DISPLAYCONFIG_PATH_INFO* PathArray; 
DISPLAYCONFIG_MODE_INFO* ModeArray; 
DISPLAYCONFIG_TOPOLOGY_ID CurrentTopology; 

GetDisplayConfigBufferSizes(QDC_ALL_PATHS, &PathArraySize, &ModeArraySize); 

PathArray = (DISPLAYCONFIG_PATH_INFO*)malloc(PathArraySize * sizeof(DISPLAYCONFIG_PATH_INFO)); 
memset(PathArray, 0, PathArraySize * sizeof(DISPLAYCONFIG_PATH_INFO)); 

ModeArray = (DISPLAYCONFIG_MODE_INFO*)malloc(ModeArraySize * sizeof(DISPLAYCONFIG_MODE_INFO)); 
memset(ModeArray, 0, ModeArraySize * sizeof(DISPLAYCONFIG_MODE_INFO)); 

LONG ret = QueryDisplayConfig(QDC_DATABASE_CURRENT,&PathArraySize, PathArray, &ModeArraySize, ModeArray, &CurrentTopology); 
// Above CurrentTopology variable will aquire the current display setting (ie Extend, Duplicate etc) 

free(PathArray); 
free(ModeArray); 

要設置所需的顯示設置(延伸,複製等):

SetDisplayConfig(0,NULL,0,NULL,SDC_TOPOLOGY_EXTEND|SDC_APPLY); 

SetDisplayConfig(0,NULL,0,NULL,SDC_TOPOLOGY_CLONE|SDC_APPLY); 
相關問題