Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Bufor ekranu to dwuwymiarowa tablica znaków i danych kolorów dla danych wyjściowych w oknie konsoli. Konsola może mieć wiele ekranu. Aktywny bufor ekranu to ten, który jest wyświetlany na ekranie.
System tworzy bufor ekranu za każdym razem, gdy tworzy nową konsolę. Aby otworzyć dojście do aktywnego buforu ekranu konsoli, określ wartość CONOUT$ w wywołaniu funkcji CreateFile . Proces może użyć funkcji CreateConsoleScreenBuffer , aby utworzyć dodatkowe ekranu dla konsoli. Nowy bufor ekranu nie jest aktywny, dopóki jego dojście nie zostanie określone w wywołaniu funkcji SetConsoleActiveScreenBuffer . Dostęp do ekranu można jednak uzyskać do odczytu i zapisu, niezależnie od tego, czy są aktywne, czy nieaktywne.
Każdy bufor ekranu ma własną dwuwymiarową tablicę rekordów informacji o znakach. Dane dla każdego znaku są przechowywane w strukturze CHAR_INFO , która określa znak Unicode lub ANSI oraz kolory pierwszego planu i tła, w których jest wyświetlany ten znak.
Wiele właściwości skojarzonych z buforem ekranu można ustawić niezależnie dla każdego buforu ekranu. Oznacza to, że zmiana aktywnego buforu ekranu może mieć dramatyczny wpływ na wygląd okna konsoli. Właściwości skojarzone z buforem ekranu obejmują:
- Rozmiar buforu ekranu, w wierszach znaków i kolumnach.
- Atrybuty tekstu (pierwszy plan i kolory tła służące do wyświetlania tekstu, który ma być zapisywany przez funkcję WriteFile lub WriteConsole ).
- Rozmiar i lokalizacja okna (prostokątny region buforu ekranu konsoli, który jest wyświetlany w oknie konsoli).
- Położenie, wygląd i widoczność kursora.
- Tryby danych wyjściowych (ENABLE_PROCESSED_OUTPUT i ENABLE_WRAP_AT_EOL_OUTPUT). Aby uzyskać więcej informacji na temat trybów danych wyjściowych konsoli, zobacz tryby konsoliHigh-Level.
Po utworzeniu buforu ekranu zawiera on znaki spacji w każdej pozycji. Jego kursor jest widoczny i umieszczony na początku buforu (0,0), a okno jest umieszczone w lewym górnym rogu u źródła buforu. Rozmiar buforu ekranu konsoli, rozmiar okna, atrybuty tekstowe i wygląd kursora są określane przez użytkownika lub przez system. Aby pobrać bieżące wartości różnych właściwości skojarzonych z buforem ekranu konsoli, użyj funkcji GetConsoleScreenBufferInfo, GetConsoleCursorInfo i GetConsoleMode .
Aplikacje, które zmieniają dowolne właściwości buforu ekranu konsoli, powinny utworzyć własny bufor ekranu lub zapisać stan odziedziczonego buforu ekranu podczas uruchamiania i przywrócić go podczas zamykania. To zachowanie współpracy jest wymagane w celu zapewnienia, że inne aplikacje współużytkujące tę samą sesję konsoli nie mają wpływu na zmiany.
Wskazówka
Zaleca się używanie trybu alternatywnego buforu w przyszłości, jeśli to możliwe, zamiast tworzenia drugiego buforu ekranu w tym celu. Alternatywny tryb buforu zapewnia zwiększoną zgodność między urządzeniami zdalnymi i innymi platformami. Aby uzyskać więcej informacji, zobacz naszą dyskusję na temat klasycznych interfejsów API konsoli i terminalu wirtualnego .
Wygląd i położenie kursora
Kursor buforu ekranu może być widoczny lub ukryty. Gdy jest widoczny, jego wygląd może się różnić, począwszy od całkowitego wypełnienia komórki znaku, po pojawienie się jako linia pozioma w dolnej części komórki. Aby pobrać informacje o wyglądzie i widoczności kursora, użyj funkcji GetConsoleCursorInfo . Ta funkcja zgłasza, czy kursor jest widoczny i opisuje wygląd kursora jako procent wypełnianej komórki znaku. Aby ustawić wygląd i widoczność kursora, użyj funkcji SetConsoleCursorInfo .
Znaki zapisywane przez funkcje we/wy konsoli wysokiego poziomu są zapisywane w bieżącej lokalizacji kursora, przesuwając kursor do następnej lokalizacji. Aby określić bieżące położenie kursora w układzie współrzędnych buforu ekranu, użyj polecenia GetConsoleScreenBufferInfo. Możesz użyć polecenia SetConsoleCursorPosition , aby ustawić położenie kursora, a tym samym kontrolować położenie tekstu zapisywanego lub powtarzanego przez funkcje we/wy wysokiego poziomu. Jeśli przeniesiesz kursor, tekst w nowej lokalizacji kursora zostanie zastąpiony.
Uwaga / Notatka
Nie zaleca się znajdowania położenia kursora przy użyciu funkcji niskiego poziomu. Zaleca się używanie sekwencji terminali wirtualnych do wykonywania zapytań dotyczących tej pozycji, jeśli jest to konieczne w przypadku układów zaawansowanych. Więcej informacji na temat preferowania sekwencji terminali wirtualnych można znaleźć w dokumencie dotyczącym funkcji klasycznych i wirtualnych terminali .
Pozycja, wygląd i widoczność kursora są ustawiane niezależnie dla każdego buforu ekranu.
Atrybuty znaków
Atrybuty znaków można podzielić na dwie klasy: color i DBCS. Następujące atrybuty są zdefiniowane w pliku nagłówkowym WinCon.h .
| Attribute | Znaczenie |
|---|---|
| FOREGROUND_BLUE | Kolor tekstu zawiera niebieski. |
| FOREGROUND_GREEN | Kolor tekstu zawiera kolor zielony. |
| FOREGROUND_RED | Kolor tekstu zawiera kolor czerwony. |
| FOREGROUND_INTENSITY | Kolor tekstu jest nasilony. |
| BACKGROUND_BLUE | Kolor tła zawiera niebieski. |
| BACKGROUND_GREEN | Kolor tła zawiera kolor zielony. |
| BACKGROUND_RED | Kolor tła zawiera kolor czerwony. |
| BACKGROUND_INTENSITY | Kolor tła jest nasilony. |
| COMMON_LVB_LEADING_BYTE | Bajt wiodący. |
| COMMON_LVB_TRAILING_BYTE | Końcowy bajt. |
| COMMON_LVB_GRID_HORIZONTAL | Górny poziomy. |
| COMMON_LVB_GRID_LVERTICAL | W lewo w pionie. |
| COMMON_LVB_GRID_RVERTICAL | Prawy pionowy. |
| COMMON_LVB_REVERSE_VIDEO | Odwrotne atrybuty pierwszego planu i tła. |
| COMMON_LVB_UNDERSCORE | Podkreślenie. |
Atrybuty pierwszego planu określają kolor tekstu. Atrybuty tła określają kolor używany do wypełnienia tła komórki. Inne atrybuty są używane z usługą DBCS.
Aplikacja może łączyć stałe pierwszego planu i tła, aby uzyskać różne kolory. Na przykład poniższa kombinacja skutkuje jasnym tekstem cyjanowym na niebieskim tle.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE
Jeśli nie określono stałej tła, tło jest czarne, a jeśli nie określono stałej pierwszego planu, tekst jest. Na przykład poniższa kombinacja tworzy tekst na białym tle. Czerwone, zielone i niebieskie są określone dla tła, które łączy się z białym tłem. Nie określono kolorów flagi dla pierwszego planu, więc jest.
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
Każda komórka znaku buforu ekranu przechowuje atrybuty kolorów używane podczas rysowania pierwszego planu (tekstu) i tła tej komórki. Aplikacja może ustawić dane kolorów dla każdej komórki znaków indywidualnie, przechowując dane w elemencie Atrybuty struktury CHAR_INFO dla każdej komórki. Bieżące atrybuty tekstowe każdego buforu ekranu są używane dla znaków zapisywanych lub powtarzanych przez funkcje wysokiego poziomu.
Aplikacja może użyć polecenia GetConsoleScreenBufferInfo , aby określić bieżące atrybuty tekstowe bufora ekranu i funkcję SetConsoleTextAttribute w celu ustawienia atrybutów znaków. Zmiana atrybutów buforu ekranu nie ma wpływu na wyświetlanie wcześniej zapisanych znaków. Te atrybuty tekstowe nie mają wpływu na znaki zapisywane przez funkcje we/wy konsoli niskiego poziomu (takie jak WriteConsoleOutput lub WriteConsoleOutputCharacter ), które jawnie określają atrybuty dla każdej komórki, która jest zapisywana lub pozostawia atrybuty bez zmian.
Uwaga / Notatka
Używanie funkcji niskiego poziomu do manipulowania domyślnymi i określonymi atrybutami tekstowym jest odradzane. Zaleca się używanie sekwencji terminali wirtualnych do ustawiania atrybutów tekstowych. Więcej informacji na temat preferowania sekwencji terminali wirtualnych można znaleźć w dokumencie dotyczącym funkcji klasycznych i wirtualnych terminali .
Atrybuty czcionki
Funkcja GetCurrentConsoleFont pobiera informacje o bieżącej czcionki konsoli. Informacje przechowywane w strukturze CONSOLE_FONT_INFO obejmują szerokość i wysokość każdego znaku w czcionki.
Funkcja GetConsoleFontSize pobiera rozmiar czcionki używanej przez określony bufor ekranu konsoli.
Uwaga / Notatka
Nie zaleca się używania funkcji do znajdowania informacji o czcionkach i manipulowania nimi. Zaleca się obsługę aplikacji wiersza polecenia w sposób neutralny dla czcionki, aby zapewnić zgodność międzyplatformowe, a także zgodność ze środowiskami hosta, które umożliwiają użytkownikowi dostosowanie czcionki. Więcej informacji o preferencjach użytkownikach i środowiskach hostów, w tym terminalach, zobacz plan ekosystemu.