如何使用windows.h的函数在C ++中更改控制台字体大小?

时间:2015-03-22 16:54:20

标签: c++ winapi

我想更改控制台字体大小,这是我写的代码+我试图找到错误。

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

int main()
{
    HANDLE Hout=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD fsize={8,8};
    CONSOLE_FONT_INFOEX Font;
    GetCurrentConsoleFontEx(Hout,0,&Font);

    //My Code to check the problem...............................
    std::cout<<Font.dwFontSize.X<<' '<<Font.dwFontSize.Y;getch();
    //...........................................................

    Font.dwFontSize=fsize;
    SetCurrentConsoleFontEx(Hout,0,&Font);
    std::cout<<"!Test Text!";
    getch();
    return 0;
}

错误是文本未更改为所需大小,当我尝试通过编写检查代码来检查问题时,输出为,
0 0
我什么都听不懂,也许我错过了什么 我需要帮助b'cuz我自己做了所有关于HANDLES和windows-functions的主题,并且没有互联网帮助。

1 个答案:

答案 0 :(得分:2)

Windows API中的大多数结构都包含一个size成员作为其第一个成员(例如OPENFILENAME)。该成员必须由应用程序初始化。 CONSOLE_FONT_INFOEX structure也不例外。

要检索当前所选字体的CONSOLE_FONT_INFOEX结构,请使用以下代码:

HANDLE Hout = ::GetStdHandle( STD_OUTPUT_HANDLE );
CONSOLE_FONT_INFOEX Font = { sizeof( Font ) };
::GetCurrentConsoleFontEx( Hout, FALSE, &Font );

此零初始化CONSOLE_FONT_INFOEX结构并将第一个成员设置为sizeof( Font )。必须检查返回值。如果您这样做,对GetCurrentConsoleFontEx的调用将返回0GetLastError报告的值为87(ERROR_INVALID_PARAMETER:参数不正确。)。