2016-04-13 1 views
0

Другие ребята рекомендуют SetCurrentConsoleFontEx function, но я не знаю, как применить его к моему проекту.В Windows ли SetCurrentConsoleFontEx изменяет размер шрифта консоли?

Я хочу изменить размер шрифта только для некоторых текстов, а не для всех текстов.

SetCurrentConsoleFontEx() изменить размер шрифта консоли?

Или есть другие способы его изменить?

Если есть, пожалуйста, покажите мне функцию консоли и простой пример.

+1

В то время как некоторые атрибуты, такие как цвета и мигание/жирный/и т. Д. На символ, другие вещи, такие как шрифт и размер, отсутствуют. Если вы измените шрифт для всего окна консоли. –

ответ

1

Ниже приведен пример использования SetCurrentConsoleFontEx для изменения размера шрифта консоли. Это влияет на все окно консоли - так, как уже сказал Joachim Pileborg, если вы хотите, чтобы размер шрифта был смешанным в одном окне консоли, это вам не поможет.

#define _WIN32_WINNT 0x500 
#include <Windows.h> 

// PrintChars sends ASCII characters to console output 
// for demonstration purposes. 
// depends only on Win32 API 
static void PrintChars() { 
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
    DWORD num_written; 
    static const char* cr_lf = "\r\n"; 
    for(char c=' '; c<'\x7f'; ++c) { 
     WriteFile(hStdout, &c, 1, &num_written, NULL); 
     if(c % 16 == 15) WriteFile(hStdout, cr_lf, 2, &num_written, NULL); 
    } 
    WriteFile(hStdout, cr_lf, 2, &num_written, NULL); 
} 

// WaitEnter blocks execution until the user 
// presses the enter key. 
// depends only on Win32 API 
static void WaitEnter() { 
    HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); 
    char buffer; 
    DWORD num_read; 
    do { 
     num_read = 0; 
     ReadFile(hStdin, &buffer, 1, &num_read, NULL); 
    } while(num_read && buffer != '\n'); 
} 

int main() { 
    // Display some example characters 
    PrintChars(); 

    // Wait for the user to see how the current font looks 
    WaitEnter(); 

    // Get a handle to the current console screen buffer 
    HANDLE hcsb = CreateFileA("CONOUT$", GENERIC_WRITE | GENERIC_READ, 
     FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 

    CONSOLE_FONT_INFOEX cfi = {sizeof(cfi)}; 

    // Populate cfi with the screen buffer's current font info 
    GetCurrentConsoleFontEx(hcsb, FALSE, &cfi); 

    // Modify the font size in cfi 
    cfi.dwFontSize.X *= 2; 
    cfi.dwFontSize.Y *= 2; 

    // Use cfi to set the screen buffer's new font 
    SetCurrentConsoleFontEx(hcsb, FALSE, &cfi); 

    // Wait for the user to see the difference before exiting 
    WaitEnter(); 
    CloseHandle(hcsb); 
} 
Смежные вопросы