GetCurrentConsoleFont не объявлен в области видимости, что я делаю не так? - PullRequest
1 голос
/ 15 января 2012

в начале у меня есть:

#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 ]

4 голосов
/ 15 января 2012

GetCurrentConsoleFont экспортируется как минимум на NT4 +, заголовки MinGW должны быть неправильными.

Попробуйте добавить этот код после # include:

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

Ваш код также неправильный, он долженbe:

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

(Каждый раз, когда вы видите PSOMETYPE в качестве параметра, вы обычно выделяете структуру SOMETYPE в стеке и передаете указатель на эту структуру в качестве параметра)

2 голосов
/ 29 сентября 2013

Комментарий Ханса выше верен. GetCurrentConsoleFont не определен в wincon.h. Добавьте следующие строки в wincon.h, чтобы получить эту функциональность:

BOOL WINAPI GetCurrentConsoleFont (HANDLE, BOOL, PCONSOLE_FONT_INFO);

COORD WINAPI GetConsoleFontSize (HANDLE, DWORD);

GetConsoleFontSize также отсутствовал.

...