无法检索"控制台字体大小"使用" GetCurrentConsoleFont()"在" Windows XP"?

时间:2013-11-21 12:42:36

标签: c winapi console-application mingw32

我使用GCC mingw32编译了这段代码而没有任何错误和警告:

#define WINVER 0x0500
#include <windows.h>
HWND StdHandle = GetStdHandle (STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFO GETFONT;
GetCurrentConsoleFont (StdHandle, FALSE, &GETFONT);
if (GETFONT.dwFontSize.X != 8 || GETFONT.dwFontSize.Y != 12)
  printf ("Font-Size is not 8 x 12");
else
  printf("Font-Size is 8 x 12");

它在Windows 7中运行完美。

但是,当它在Windows XP中运行并且我将控制台字体大小调整为“8 x 12”时,GETFONT.dwFontSize.X总是等于80,而GETFONT.dwFontSize.Y总是等于25。

然后,我添加了

DWORD ErrorCode = GetLastError();

然后,它返回0x0 (ERROR_SUCCESS(:The operation completed successfully.))

为什么在Windows XP中使用GetCurrentConsoleFont时总是会得到错误的值?

2 个答案:

答案 0 :(得分:2)

CONSOLE_FONT_INFO上的MSDN文档说

  

要获取字体大小,请将字体索引传递给GetConsoleFontSize函数。

答案 1 :(得分:0)

BOOL WINAPI GetCurrentConsoleFont (HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFO lpConsoleCurrentFont);
COORD WINAPI GetConsoleFontSize (HANDLE hConsoleOutput, DWORD nFont);

CONSOLE_FONT_INFO GETFONT;
GetCurrentConsoleFont (StdHandle, FALSE, &GETFONT);
COORD Fontsize = GetConsoleFontSize (StdHandle, GETFONT.nFont);
SHORT Font_X = Fontsize.X;
SHORT Font_Y = Fontsize.Y;
if (Font_X != 8 || Font_Y != 12)
{
     printf ("Font-Size is not 8 x 12");
}