【发布时间】:2013-11-21 12:42:35
【问题描述】:
我用 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 时总是得到错误的值?
【问题讨论】:
-
您根本没有执行任何错误检查。您需要检查您调用的函数的返回值。不要只打电话给
GetLastError。只有在 MSDN 文档说它有意义时才这样做。 -
OT (?):针对 XP 使用:
#define WINVER 0x0501!0x0500是 Windows 2000,GetCurrentConsoleFont()不可用。供参考:msdn.microsoft.com/en-us/library/vstudio/6sehtctf.aspx -
@alk THX 为您提供关于将
0x0500更改为0x0501的建议。而我刚刚找到了这个问题的完美解决方案: -
此更改是否解决了问题?
-
@alk 不是,但谢谢。我在哪里可以发布此问题的解决方案?适合回答我自己的问题吗?
标签: c winapi console-application mingw32