2011-05-22 41 views
10

操作系統:Windows 7 64位多臺監視器上的SetConsoleWindowInfo

兩臺監視器,一個縱向,一個橫向。一個是主要景觀。我試圖調整控制檯使用SetConsoleWindowInfo,但如果我嘗試和調整大小,將適合肖像監視器,但不適合景觀(主)監視器,該函數返回失敗,即使是控制檯實際上是在肖像監視器上。

我知道Windows使用屏幕尺寸作爲控制檯窗口尺寸的上限。但是,它僅使用主監視器的屏幕大小。有沒有什麼方法可以指定要使用哪個屏幕的尺寸,或者甚至更好,讓它將組合桌面區域用作最大尺寸?

+0

有趣的問題。 +1 – 0xC0000022L 2011-05-22 02:41:24

+0

+1 - 文檔似乎表明[GetLargestConsoleWindowSize](http://msdn.microsoft.com/en-us/library/ms683193.aspx)函數用於確定事物,在這種情況下,重新SOL。 :( – 2011-05-22 03:23:40

+0

所以沒有辦法繞過這個重新編碼整個控制檯窗口系統? – tentonwire 2011-05-26 02:34:57

回答

2

下可能會有所幫助:

#include "windows.h" 
#include <conio.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    bool hasSecondary = false; 
    POINT secondaryPosition; 
    POINT secondarySize; 
    POINT primarySize; 
    { 
     DISPLAY_DEVICE displayDevice; 
     displayDevice.cb = sizeof(DISPLAY_DEVICE); 

     DEVMODE deviceMode; 
     ZeroMemory(&deviceMode, sizeof(DEVMODE)); 
     deviceMode.dmSize = sizeof(DEVMODE); 

     int i = 0; 
     while(::EnumDisplayDevices(NULL, i++, &displayDevice, 0)) 
     { 
      if(displayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP && 
       !(displayDevice.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER)) 
      { 
       if(EnumDisplaySettingsEx(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &deviceMode, 0) == FALSE) 
        EnumDisplaySettingsEx(displayDevice.DeviceName, ENUM_REGISTRY_SETTINGS, &deviceMode, 0); 
       if(deviceMode.dmPosition.x != 0 || deviceMode.dmPosition.y != 0) 
       { 
        hasSecondary = true; 
        secondaryPosition.x = deviceMode.dmPosition.x; 
        secondaryPosition.y = deviceMode.dmPosition.y; 
        secondarySize.x = deviceMode.dmPelsWidth; 
        secondarySize.y = deviceMode.dmPelsHeight; 
       } 
       else 
       { 
        primarySize.x = deviceMode.dmPelsWidth; 
        primarySize.y = deviceMode.dmPelsHeight; 
       } 
      } 
     } 
    } 

    MoveWindow(GetConsoleWindow(), 
     secondaryPosition.x, secondaryPosition.y, 
     secondarySize.x, secondarySize.y, 
     TRUE); 

    _getch(); 

    return 0; 
} 
+0

完美的作品! – kennyzx 2012-02-21 06:59:00