Есть ли какой-нибудь способ изменить шрифт текста, используемый CMD с программой C? - PullRequest
0 голосов
/ 02 марта 2020

Я очень сомневаюсь, что это возможно, но в настоящее время я делаю какую-то игру, используя C и Codeblocks, и это было бы очень полезно. По сути, мне нужна программа, которая изменяет текстовый шрифт, используемый CMD. По умолчанию это Consolas размером 16, я думаю, но мне нужно, чтобы это был квадратный шрифт 8x8 в CMD. Кто-нибудь знает, есть ли способ сделать это?

Редактировать:

Я должен уточнить, другие люди будут запускать этот код на разных компьютерах, и они, вероятно, не будут знать, что он предназначен для быть таким. Я мог бы поставить предупреждение в начале, но лучшим способом было бы сделать это напрямую с помощью некоторого кода.

Ответы [ 3 ]

1 голос
/ 02 марта 2020

Не точный ответ, который вы будете искать ...

Вы можете вручную выбрать настройки окна enter image description here

И это будет применяться всегда, когда используя эту консоль / экземпляр на этом компьютере.

Насколько мне известно, единственное изменение заключается в том, что вы можете изменять только цвета. но не размер шрифта программно ..

0 голосов
/ 02 марта 2020

Вы можете посмотреть на последовательности виртуального терминала консоли (CVTS) для различного шрифта и цвета текста и т. Д. c. это можно изменить в окне Windows CMD.
Следующий пример представлен на странице , которая описывает CVTS .

Я выполнил следующее в Code :: Blocks, Консольное приложение для тестирования: (Этот и другие примеры включены внизу ссылки выше.)

Примечание: ENABLE_VIRTUAL_TERMINAL_PROCESSING необходимо. Если ваша среда еще не включает его, включите его, как я показал ниже, в противном случае оставьте его (в моем Windows 10 окружении его не было)

#include <stdio.h>
#include <wchar.h>
#include <windows.h>

#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif

int main()
{
    // Set output mode to handle virtual terminal sequences
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hOut == INVALID_HANDLE_VALUE)
    {
        return GetLastError();
    }

    DWORD dwMode = 0;
    if (!GetConsoleMode(hOut, &dwMode))
    {
        return GetLastError();
    }

    dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
    if (!SetConsoleMode(hOut, dwMode))
    {
        return GetLastError();
    }

    // Try some Set Graphics Rendition (SGR) terminal escape sequences
    wprintf(L"\x1b[31mThis text has a red foreground using SGR.31.\r\n");
    wprintf(L"\x1b[1mThis text has a bright (bold) red foreground using SGR.1 to affect the previous color setting.\r\n");
    wprintf(L"\x1b[mThis text has returned to default colors using SGR.0 implicitly.\r\n");
    wprintf(L"\x1b[34;46mThis text shows the foreground and background change at the same time.\r\n");
    wprintf(L"\x1b[0mThis text has returned to default colors using SGR.0 explicitly.\r\n");
    wprintf(L"\x1b[31;32;33;34;35;36;101;102;103;104;105;106;107mThis text attempts to apply many colors in the same command. Note the colors are applied from left to right so only the right-most option of foreground cyan (SGR.36) and background bright white (SGR.107) is effective.\r\n");
    wprintf(L"\x1b[39mThis text has restored the foreground color only.\r\n");
    wprintf(L"\x1b[49mThis text has restored the background color only.\r\n");

    return 0;
}
0 голосов
/ 02 марта 2020

Итак, первое, что мне пришло в голову, это RMB на CMD -> Настройки, затем go на Шрифт и выберите, какой вы хотите. Или это должно быть сделано по коду?

...