Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um buffer de tela é uma matriz bidimensional de dados de caracteres e cores para saída em uma janela do console. Um console pode ter vários buffers de tela. O buffer de tela ativo é aquele exibido na tela.
O sistema cria um buffer de tela sempre que cria um novo console. Para abrir um identificador para o buffer de tela ativo de um console, especifique o valor CONOUT$ em uma chamada para a função CreateFile . Um processo pode usar a função CreateConsoleScreenBuffer para criar buffers de tela adicionais para seu console. Um novo buffer de tela não estará ativo até que seu identificador seja especificado em uma chamada para a função SetConsoleActiveScreenBuffer . No entanto, os buffers de tela podem ser acessados para ler e gravar se estão ativos ou inativos.
Cada buffer de tela tem sua própria matriz bidimensional de registros de informações de caractere. Os dados de cada caractere são armazenados em uma estrutura CHAR_INFO que especifica o caractere Unicode ou ANSI e as cores de primeiro plano e plano de fundo em que esse caractere é exibido.
Várias propriedades associadas a um buffer de tela podem ser definidas independentemente para cada buffer de tela. Isso significa que a alteração do buffer de tela ativa pode ter um efeito dramático na aparência da janela do console. As propriedades associadas a um buffer de tela incluem:
- Tamanho do buffer de tela, em linhas e colunas de caracteres.
- Atributos de texto (cores de primeiro plano e plano de fundo para exibir texto a ser escrito pela função WriteFile ou WriteConsole ).
- Tamanho e localização da janela (a região retangular do buffer de tela do console exibida na janela do console).
- Posição, aparência e visibilidade do cursor.
- Modos de saída (ENABLE_PROCESSED_OUTPUT e ENABLE_WRAP_AT_EOL_OUTPUT). Para obter mais informações sobre os modos de saída do console, consulte High-Level Modos de Console.
Quando um buffer de tela é criado, ele contém caracteres de espaço em cada posição. Seu cursor é visível e posicionado na origem do buffer (0,0) e a janela é posicionada com seu canto superior esquerdo na origem do buffer. O tamanho do buffer de tela do console, o tamanho da janela, os atributos de texto e a aparência do cursor são determinados pelo usuário ou pelos padrões do sistema. Para recuperar os valores atuais das várias propriedades associadas ao buffer de tela do console, use as funções GetConsoleScreenBufferInfo, GetConsoleCursorInfo e GetConsoleMode .
Os aplicativos que alteram qualquer uma das propriedades do buffer de tela do console devem criar seu próprio buffer de tela ou salvar o estado do buffer de tela herdado durante a inicialização e restaurá-lo na saída. Esse comportamento cooperativo é necessário para garantir que outros aplicativos que compartilham a mesma sessão de console não sejam afetados pelas alterações.
Dica
É recomendável usar o modo de buffer alternativo daqui para frente, se possível, em vez de criar um segundo buffer de tela para essa finalidade. O modo de buffer alternativo oferece maior compatibilidade entre dispositivos remotos e com outras plataformas. Consulte nossa discussão sobre APIs de console clássico versus terminal virtual para obter mais informações.
Aparência e posição do cursor
O cursor de um buffer de tela pode estar visível ou oculto. Quando está visível, sua aparência pode variar, desde preencher completamente uma célula de caractere até aparecer como uma linha horizontal na parte inferior da célula. Para recuperar informações sobre a aparência e a visibilidade do cursor, use a função GetConsoleCursorInfo . Essa função relata se o cursor está visível e descreve a aparência do cursor como a porcentagem de uma célula de caractere que ele preenche. Para definir a aparência e a visibilidade do cursor, use a função SetConsoleCursorInfo .
Os caracteres escritos pelas funções de E/S de console de alto nível são gravados no local atual do cursor, avançando o cursor para o próximo local. Para determinar a posição atual do cursor no sistema de coordenadas de um buffer de tela, use GetConsoleScreenBufferInfo. Você pode usar SetConsoleCursorPosition para definir a posição do cursor e, assim, controlar o posicionamento do texto que é gravado ou ecoado pelas funções de E/S de alto nível. Se você mover o cursor, o texto no novo local do cursor será substituído.
Observação
Usar as funções de baixo nível para localizar a posição do cursor é desencorajado. É recomendável usar sequências de terminal virtual para consultar essa posição, se necessário, para layouts avançados. Mais informações sobre como preferir sequências de terminal virtual podem ser encontradas nas funções clássicas versus no documento do terminal virtual .
A posição, a aparência e a visibilidade do cursor são definidas independentemente para cada buffer de tela.
Atributos de caractere
Atributos de caractere podem ser divididos em duas classes: cor e DBCS. Os atributos a seguir são definidos no arquivo de WinCon.h cabeçalho.
| Atributo | Significado |
|---|---|
| FOREGROUND_BLUE | A cor do texto contém azul. |
| FOREGROUND_GREEN | A cor do texto contém verde. |
| FOREGROUND_RED | A cor do texto contém vermelho. |
| FOREGROUND_INTENSITY | A cor do texto é intensificada. |
| BACKGROUND_BLUE | A cor da tela de fundo contém azul. |
| BACKGROUND_GREEN | A cor da tela de fundo contém verde. |
| BACKGROUND_RED | A cor da tela de fundo contém vermelho. |
| BACKGROUND_INTENSITY | A cor da tela de fundo é intensificada. |
| COMMON_LVB_LEADING_BYTE | Bytes à esquerda. |
| COMMON_LVB_TRAILING_BYTE | Bytes à direita. |
| COMMON_LVB_GRID_HORIZONTAL | Horizontal superior. |
| COMMON_LVB_GRID_LVERTICAL | Vertical esquerda. |
| COMMON_LVB_GRID_RVERTICAL | Vertical direita. |
| COMMON_LVB_REVERSE_VIDEO | Atributos inversos de primeiro plano e plano de fundo. |
| COMMON_LVB_UNDERSCORE | Enfatizar. |
Os atributos de primeiro plano especificam a cor do texto. Os atributos de plano de fundo especificam a cor usada para preencher a tela de fundo da célula. Os outros atributos são usados com DBCS.
Um aplicativo pode combinar as constantes em primeiro plano e plano de fundo para obter cores diferentes. Por exemplo, a combinação a seguir resulta em texto ciano brilhante em um plano de fundo azul.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE
Se nenhuma constante de plano de fundo for especificada, a tela de fundo será preta e, se nenhuma constante de primeiro plano for especificada, o texto será preto. Por exemplo, a combinação a seguir produz texto preto em um plano de fundo branco. Vermelho, verde e azul são especificados para o plano de fundo que combina com um plano de fundo branco. Nenhuma cor de sinalizador é especificada para o primeiro plano, portanto, ela é preta.
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
Cada célula de caractere de buffer de tela armazena os atributos de cor para as cores usadas no desenho do primeiro plano (texto) e da tela de fundo dessa célula. Um aplicativo pode definir os dados de cor para cada célula de caractere individualmente, armazenando os dados no membro Atributos da estrutura CHAR_INFO para cada célula. Os atributos de texto atuais de cada buffer de tela são usados para caracteres posteriormente gravados ou ecoados pelas funções de alto nível.
Um aplicativo pode usar GetConsoleScreenBufferInfo para determinar os atributos de texto atuais de um buffer de tela e a função SetConsoleTextAttribute para definir os atributos de caractere. Alterar os atributos de um buffer de tela não afeta a exibição de caracteres gravados anteriormente. Esses atributos de texto não afetam os caracteres gravados pelas funções de E/S de console de baixo nível (como a função WriteConsoleOutput ou WriteConsoleOutputCharacter ), que especificam explicitamente os atributos para cada célula que é gravada ou deixam os atributos inalterados.
Observação
O uso das funções de baixo nível para manipular atributos de texto padrão e específicos é desencorajado. É recomendável usar sequências de terminal virtual para definir atributos de texto. Mais informações sobre como preferir sequências de terminal virtual podem ser encontradas nas funções clássicas versus no documento do terminal virtual .
Atributos de fonte
A função GetCurrentConsoleFont recupera informações sobre a fonte do console atual. As informações armazenadas na estrutura de CONSOLE_FONT_INFO incluem a largura e a altura de cada caractere na fonte.
A função GetConsoleFontSize recupera o tamanho da fonte usada pelo buffer de tela do console especificado.
Observação
O uso de funções para localizar e manipular informações de fonte é desencorajado. É recomendável operar aplicativos de linha de comando de maneira neutra para garantir a compatibilidade entre plataformas, bem como a compatibilidade com ambientes de host que permitem ao usuário personalizar a fonte. Mais informações sobre preferências do usuário e ambientes de host, incluindo terminais, consulte o roteiro do ecossistema.