Ir ao conteúdo
  • Cadastre-se

C++ Aumentar fonte no devcpp


GLopes29

Posts recomendados

 @GLopes29   de acordo com o explicado nesse link :

https://www.hardware.com.br/comunidade/tamanho-fonte/1374088

a fonte que aparece no console , que é aquela janela preta , não se pode modificar o tamanho  , pois é definida pelo sistema , porém você pode colorir as letras , usando  uma função  criada por usuários , que e a textcolor .

Link para o comentário
Compartilhar em outros sites

4 horas atrás, GLopes29 disse:

Pessoal, alguém poderia me dizer como aumento a fonte no programa compilado ,uso o dev-cpp

 

Há uma certa ambiguidade no que escreveu. Se quer mudar o tamanho da fonte no Dev-C++ está nas configurações do ambiente.

 

Mas se quer mudar a fonte a ser usada por seu programa use SetCurrentConsoleFontEx() como documentado para Windows aqui

 

Note que ao mudar uma coisa dessas, mesmo que dê certo, você deve antes salvar a fonte em uso ao sair do programa volta para a fonte em uso antes.

 

Recomendo não testar esse tipo do programa dentro do IDE porque alguns desses ambientes salvam isso para as próximas execuções e pode ser um desastre.

 

3 horas atrás, devair1010 disse:

a fonte que aparece no console , que é aquela janela preta , não se pode modificar o tamanho  , pois é definida pelo sistema

 

Sim, se pode mudar.

 

Se você está programando em C --- ou C++ --- em um sistema que foi escrito em C não há nada que não se possa mudar, provavelmente. O que pode acontecer é não se saber como. Mas a documentação sobre essas coisas é extensa. Veja aqui em https://docs.microsoft.com/pt-br/windows/console/ onde tem muita coisa em português até.

 

EXEMPLO:

 

Essa função é parte de algo que eu postei aqui em mai/2020. Não me lembro do contexto, mas dá pra ver como escrever para Windows. O código vai alterar fonte, o tamanho da tela, cores, páginas de código  e outras coisas, então dá pra ver a mecânica.

 

 

int         prepara_tela(_cs_infoEx* csinfo)
{
    HANDLE  h = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_FONT_INFOEX          fonte;
    CONSOLE_SCREEN_BUFFER_INFOEX* scrbInfoEx = &csinfo->infoEx;
    COORD                        xy;
    int                          res = 0;
    srand(20200505); // start rand()
    // confirma tamanho da tela
    scrbInfoEx->cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
    res = GetConsoleScreenBufferInfoEx(h, scrbInfoEx);
    if (res == 0) return GetLastError();
    csinfo->l = (scrbInfoEx->srWindow.Bottom - scrbInfoEx->srWindow.Top + 1);
    csinfo->c = (scrbInfoEx->srWindow.Right - scrbInfoEx->srWindow.Left + 1);
    if ((csinfo->l < 24) || (csinfo->c < 80))
    {
        printf("Use uma tela com ao menos 24x80 caracteres\n");
        return -1; // pelo menos 24x80
    };  // if()
    char barra[256];
    memset(barra, 196, 256);
    SetConsoleOutputCP(437);
    SetConsoleCP(437);
    csinfo->baseL = csinfo->baseC = 1;
    csinfo->cor = _verde_;
    csinfo->estilo = 0;
    csinfo->i_handle = GetStdHandle(STD_INPUT_HANDLE);
    csinfo->o_handle = h;
    // define o modo da console
    int   modo = 0;
    GetConsoleMode(h, &modo);
    // DISABLE_NEWLINE_AUTO_RETURN 0x0008 
    // ENABLE_WRAP_AT_EOL_OUTPUT   0x0002
    modo = modo & 0xFFF5; //1111 0101

    // salvo o padrão em uso, muda para o estado que queremos

    SetConsoleMode(h, modo);
    // muda a fonte para Courier New
    fonte.cbSize = sizeof(CONSOLE_FONT_INFOEX);
    fonte.nFont = 0;
    fonte.dwFontSize.X = 10;
    fonte.dwFontSize.Y = 20;
    lstrcpyW(fonte.FaceName, L"Courier New");
    fonte.FontFamily = 54;
    fonte.FontWeight = 400;
    res = SetCurrentConsoleFontEx(h, 0, &fonte);
    if (res == 0)
    {
        printf("SetCurrentConsoleFontEx() falhou: %d\n", GetLastError());
        return (-1);
    };  // if()
    // agora retira o scroll
    xy.Y = scrbInfoEx->srWindow.Bottom - scrbInfoEx->srWindow.Top + 1;
    xy.X = scrbInfoEx->srWindow.Right - scrbInfoEx->srWindow.Left + 1;
    res = SetConsoleScreenBufferSize(h, xy);
    if (res == 0)
    {
        res = GetLastError();
        printf("SetConsoleScreenBufferSize() falhou! Erro : %d \n",
            res);
        return (-1);
    };  // if()
    cls();
    text_color(_verde_, _preto_);
    barra[csinfo->c - 2] = 0;
    gotoYX(csinfo->l - 3, 1);
    printf("%s", barra);
    csinfo->l -= 4;
    csinfo->c -= 2;
    csinfo->baseL = 1; // origem da janela grafica
    csinfo->baseC = 1;
    return 0;
};  // prepara_tela()

 

Como guardar os valores

 

_cs_status*    guarda(_cs_status* antes)
{
	antes->cp_original = GetConsoleCP();
	antes->ocp_original = GetConsoleOutputCP();
	strcpy(antes->local_original, setlocale(LC_ALL, NULL));
	HANDLE  h = GetStdHandle(STD_OUTPUT_HANDLE);
	char buffer[80];
	char* pBuffer = buffer;
	int res = 0;
	res = GetCurrentConsoleFont(h, 0, &(antes->font_info));
	// pois e: mas qual a fonte? Tem que ver na tabela
	// precisa da versao ex da rotina e eu nao sabia
	antes->font_infoEx.cbSize = sizeof(CONSOLE_FONT_INFOEX);
	res = GetCurrentConsoleFontEx(h, 0, &(antes->font_infoEx));
	// A fonte em uso fica aqui no registro
	//    Computador\HKEY_LOCAL_MACHINE\SOFTWARE\
    //    Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
	//
	GetConsoleMode(h, &antes->mode_original);
	// agora falta SCREEN BUFFER
	antes->infoEx.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
	GetConsoleScreenBufferInfoEx(h, &antes->infoEx);
	return antes;
};  // guarda()

 

Essa função roda para ler os valores e salvar nessa estrutura _cs_status que é assim:

 

typedef struct
{
	int     cp_original;
	int     ocp_original;
	char    local_original[40];
	int		mode_original;
	FILE* log;
	CONSOLE_FONT_INFO font_info;
	CONSOLE_FONT_INFOEX font_infoEx;
	CONSOLE_SCREEN_BUFFER_INFO info;
	CONSOLE_SCREEN_BUFFER_INFOEX infoEx;
}  _cs_status;

 

Então na saída do programa dá pra ler a struct e voltar tudo ao que era antes.

 

Se precisar escreva e posto o programa inteiro. Não achei agora e pode não ser importante.

 

Em C++ são as mesmas funções, mas em geral é mais fácil de escrever porque pode colocar essas coisas em uma classe e fica tudo automático... 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!