我使用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时总是会得到错误的值?
答案 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");
}