在多个监视器上设置控制台窗口信息

操作系统:Windows 7 64位

两台显示器,一台是纵向的,一台是横向的。 景观一是主要的。

我正在尝试使用SetConsoleWindowInfo来调整控制台的大小,但是如果我尝试将其大小调整为适合纵向监视器而不是横向(主)监视器的大小,则该函数将返回失败,即使控制台实际上处于打开状态肖像监视器。

我知道Windows使用屏幕尺寸作为控制台窗口尺寸的上限。 但是,它只使用主监视器的屏幕大小。 有什么方法可以指定使用哪个屏幕的尺寸,或者甚至更好地使用组合的桌面区域作为最大尺寸?

以下可能有所帮助:

#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; }