作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
操作系统: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;
}
关于c++ - 多个显示器上的 SetConsoleWindowInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085512/
操作系统:Windows 7 64位 两台显示器,一台纵向,一台横向。景观一是主要的。 我正在尝试使用 SetConsoleWindowInfo 调整控制台的大小,但如果我尝试将其调整为适合纵向显示器
我是 C++ 的新手,决定用一个小型主机游戏来挑战自己。避免典型的闪烁。从我从 MSDN 文档中得到的信息来看,我应该使用控制台缓冲区,但我很轻松地从简单的事情开始,比如更改窗口标题和调整它的大小。我
我是一名优秀的程序员,十分优秀!