为什么最大的控制台列不等于屏幕宽度除以字体大小(以像素为单位)?

问题描述 投票:0回答:1

为什么控制台列不等于屏幕宽度除以字体大小(以像素为单位)? 我在编程和英语方面都是新手,所以可能会很愚蠢。首先我对此感到抱歉。 代码如下:

#include<windows.h>
#include<iostream>

int main()
{
    HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_FONT_INFOEX fontInfo;
    fontInfo.cbSize = sizeof(CONSOLE_FONT_INFOEX);
    GetCurrentConsoleFontEx(consoleHandle, FALSE, &fontInfo);
    fontInfo.dwFontSize.X = (SHORT)0;
    fontInfo.dwFontSize.Y = (SHORT)10;
    fontInfo.FontWeight = FW_NORMAL;
    wcscpy(fontInfo.FaceName, L"Consolas");
    SetCurrentConsoleFontEx(consoleHandle, FALSE, &fontInfo);

    std::cout << GetLargestConsoleWindowSize(consoleHandle).X << std::endl;

    while(1)
    {
        char a = std::cin.get();
    };
    return 0;   
}

谢谢!

我的屏幕尺寸是1920x1080,所以结果是320。我想结果应该是1920/10=192。

我希望能够调整控制台的大小并在任何我想要的地方更改其位置,这是我遇到的问题之一。我还想了解为什么 SetConsoleWindowInfo 函数不起作用,但我相信我应该将其作为一个单独的问题来问。

c++ windows winapi
1个回答
0
投票

我添加一些代码:

WINBOOL Flag = SetCurrentConsoleFontEx(consoleHandle, FALSE, &fontInfo);

std::cout << Flag << std::endl; 

std::cout << "Largest:" << GetLargestConsoleWindowSize(consoleHandle).X << std::endl;

std::cout << "real font size:"<<(GetSystemMetrics(SM_CXSCREEN)/GetLargestConsoleWindowSize(consoleHandle).X)<< std::endl;

结果是:
1
最大:320
实际字体大小:4

© www.soinside.com 2019 - 2024. All rights reserved.