GetCurrentConsoleFont没有在范围内声明,我做错了什么?

时间:2012-01-14 23:53:46

标签: c++ winapi console windows-xp mingw

一开始我有:

#include <sstream>
#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <string>
#define _WIN32_WINNT 0x500 //tells that this is win 2000 or higher, without GetConsoleWindow would not work
#include <windows.h>

using namespace std;

int main() {
  PCONSOLE_FONT_INFO lpConsoleCurrentFont;
  GetCurrentConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), false,  lpConsoleCurrentFont);
  return 0;
}

未记录的函数SetConsoleFont有效,但GetCurrentConsoleFont在编译时失败,说它未在此范围内声明。

- 编辑:更改为自我持续代码。

2 个答案:

答案 0 :(得分:4)

GetCurrentConsoleFont至少在NT4 +上导出,MinGW标头必须是错误的。

尝试在#include's后添加此代码:

#ifdef __cplusplus
extern "C" {
#endif
BOOL WINAPI GetCurrentConsoleFont(HANDLE hConsoleOutput,BOOL bMaximumWindow,PCONSOLE_FONT_INFO lpConsoleCurrentFont);
#ifdef __cplusplus
}
#endif

你的代码也错了,应该是:

CONSOLE_FONT_INFO ConsoleFontInfo;
GetCurrentConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), false,  &ConsoleFontInfo);

(每当你看到PSOMETYPE作为参数时,通常会在堆栈上分配一个SOMETYPE结构并将指针传递给该结构作为参数)

答案 1 :(得分:2)

上面的汉斯评论是正确的。 GetCurrentConsoleFont未在wincon.h中定义。将以下行添加到wincon.h以获得此功能:

BOOL WINAPI GetCurrentConsoleFont(HANDLE,BOOL,PCONSOLE_FONT_INFO);

COORD WINAPI GetConsoleFontSize(HANDLE,DWORD);

GetConsoleFontSize也不见了。