2011-07-06 8 views
2

私のC++ Win32プログラムでは、現在の表示設定を「拡張」モードに設定したいと考えています。私はグーグルで、SetDisplayConfig()がWindows 7(私はWindows 7)に進出する方法だが、今はMSDNの説明(リンクhere)がかなり混乱しているように進んでいるようだ。私はC++やAPIのプログラミングに非常に慣れているので、これを理解するのは難しいと思っています。C++を使用してWindows 7で表示設定をEXTENDモードに設定するにはどうすればよいですか?

私はいくつかのコードサンプルと説明を高く評価します。前もって感謝します!

答えて

5

私は答えを見つけました。

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

又は

SetDisplayConfig(0,NULL,0,NULL,SDC_TOPOLOGY_CLONE|SDC_APPLY); 
:必要な表示設定を(重複などを拡張)を設定する

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); 

:現在の設定を識別するために