Compartilhar via


Funções de saída do console Low-Level

Importante

Este documento descreve a funcionalidade da plataforma de console que não faz mais parte do roteiro do nosso ecossistema. Não recomendamos usar esse conteúdo em novos produtos, mas continuaremos a dar suporte aos usos existentes para o futuro indefinido. Nossa solução moderna preferida se concentra em sequências de terminal virtual para a máxima compatibilidade em cenários de plataforma cruzada. Você pode encontrar mais informações sobre essa decisão de design em nosso console clássico versus documento de terminal virtual .

As funções de saída de console de baixo nível fornecem acesso direto às células de caractere de um buffer de tela. Um conjunto de funções lê ou grava em células consecutivas começando em qualquer local no buffer de tela do console. Outro conjunto de funções lê ou grava em blocos retangulares de células.

As funções a seguir leem ou gravam em um número especificado de células de caracteres consecutivas em um buffer de tela, começando com uma célula especificada.

Função Descrição
ReadConsoleOutputCharacter Copia uma cadeia de caracteres Unicode ou ANSI de um buffer de tela.
WriteConsoleOutputCharacter Grava uma cadeia de caracteres Unicode ou ANSI em um buffer de tela.
ReadConsoleOutputAttribute Copia uma cadeia de caracteres de atributos de texto e cores de plano de fundo de um buffer de tela.
WriteConsoleOutputAttribute Grava uma cadeia de caracteres de atributos de texto e cor de tela de fundo em um buffer de tela.
FillConsoleOutputCharacter Grava um único caractere Unicode ou ANSI em um número especificado de células consecutivas em um buffer de tela.
FillConsoleOutputAttribute Grava uma combinação de atributo de cor de plano de fundo e texto em um número especificado de células consecutivas em um buffer de tela.

Para todas essas funções, quando a última célula de uma linha é encontrada, a leitura ou gravação envolve a primeira célula da próxima linha. Quando o final da última linha do buffer de tela do console é encontrado, as funções de gravação descartam todos os caracteres ou atributos não escritos e as funções de leitura relatam o número de caracteres ou atributos realmente gravados.

As funções a seguir leem ou gravam em blocos retangulares de células de caractere em um local especificado em um buffer de tela.

Função Descrição
ReadConsoleOutput Copia dados de caracteres e cores de um bloco especificado de células de buffer de tela em um determinado bloco em um buffer de destino.
WriteConsoleOutput Grava dados de caractere e cor em um bloco especificado de células de buffer de tela de um determinado bloco em um buffer de origem.

Essas funções tratam buffers de tela e buffers de origem ou de destino como matrizes bidimensionais de estruturas de CHAR_INFO (contendo dados de atributo de caractere e cor para cada célula). As funções especificam a largura e a altura, em células de caractere, do buffer de origem ou de destino, e o ponteiro para o buffer é tratado como um ponteiro para a célula de origem (0,0) da matriz bidimensional. As funções usam uma estrutura SMALL_RECT para especificar qual retângulo acessar no buffer de tela do console e as coordenadas da célula superior esquerda no buffer de origem ou destino determinam a localização do retângulo correspondente nesse buffer.

Essas funções recortam automaticamente o retângulo de buffer de tela especificado para caber dentro dos limites do buffer de tela do console. Por exemplo, se o retângulo especificar coordenadas inferiores direitas que são (coluna 100, linha 50) e o buffer de tela do console tiver apenas 80 colunas de largura, as coordenadas serão recortadas para que sejam (coluna 79, linha 50). Da mesma forma, esse retângulo ajustado é recortado novamente para caber dentro dos limites do buffer de origem ou de destino. As coordenadas de buffer de tela do retângulo real que foi lido ou gravado são especificadas. Para obter um exemplo que usa essas funções, consulte Blocos de Leitura e Gravação de Caracteres e Atributos.

A ilustração mostra uma operação ReadConsoleOutput em que o recorte ocorre quando o bloco é lido do buffer de tela do console e novamente quando o bloco é copiado para o buffer de destino. A função relata o retângulo real do buffer de tela do qual copiou.

janela do buffer de tela com buffer de destino