2016-04-13 19 views
0

Diğer çocuklar, SetCurrentConsoleFontEx function'u önermektedir, ancak bunu projeme nasıl uygulayacağımı bilmiyorum.Windows'ta SetCurrentConsoleFontEx konsolunun yazı tipi boyutunu değiştirir mi?

Tüm metinleri değil, yalnızca bazı metinlerin yazı tipi boyutunu değiştirmek istiyorum.

SetCurrentConsoleFontEx() konsolun yazı tipi boyutunu değiştiriyor mu?

Veya değiştirmek için başka yollar var mı?

Varsa, lütfen bana konsol işlevini ve basit bir örneği gösterin.

+1

Bazı özellikler, renkler ve yanıp sönen/kalın/vb. Gibi karakterlerin başına, font ve boyut gibi başka şeyler değildir. Yazı tipini değiştirirseniz, tüm konsol penceresi için. –

cevap

1

Konsolun yazı tipi boyutunu değiştirmek için SetCurrentConsoleFontEx kullanılmasının bir örneği. Bu, tüm konsol penceresini etkiler - Joachim Pileborg'un önceden söylediği gibi, tek bir konsol penceresinde karışık yazı tipi boyutları istiyorsanız, bu size yardımcı olmaz.

#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); 
} 
İlgili konular