Ir ao conteúdo

Posts recomendados

Postado
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

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!