Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: jankowalski25
Biblioteki C/C++

ScrollConsoleScreenBuffer

[funkcja] Przesuwa blok danych w buforze ekranu.

Składnia

C/C++
#include <windows.h>
BOOL WINAPI ScrollConsoleScreenBuffer(
HANDLE hConsoleOutput,
const SMALL_RECT * lpScrollRectangle,
const SMALL_RECT * lpClipRectangle,
COORD dwDestinationOrigin,
const CHAR_INFO * lpFill );

Argumenty

ArgumentOpis
hConsoleOutputUchwyt do bufora ekranu konsoli. Uchwyt musi mieć dostęp GENERIC_READ.
lpScrollRectangleWskaźnik do struktury SMALL_RECT prostokąta do przesunięcia.
lpClipRectangleWskaźnik do struktury SMALL_RECT prostokąta bufora ekranu, który ma wpływ na przewijanie. Wartość tego argumentu może wynosić NULL.
dwDestinationOriginStruktura » WinAPICOORD określająca lewy górny róg nowej lokalizacji zawartości lpScrollRectangle (w znakach).
lpFillWskaźnik do struktury CHAR_INFO określającej znak i kolor atrybutów używanych w wypełnianiu komórek pomiędzy lpScrollRectangle i lpClipRectangle, które były puste w wyniku przesunięcia.

Zwracana wartość

Jeśli nie wystąpią błędy, zwracana wartość jest niezerowa, inaczej 0. Aby uzyskać szczegółowe informacje o błędzie, wywołaj funkcję » WinAPIGetLastError.

Dodatkowe informacje

Efekt przesunięcia może być ograniczony przez określony prostokąt, więc zawartość bufora ekranu konsoli na zewnątrz prostokąta pozostanie niezmieniona. Funkcja kopiuje zawartość prostokątnego obszaru bufora ekranu określonego przez argument lpScrollRectangle do innego obszaru bufora ekranu konsoli. Po wywołaniu funkcji wymiary określonego prostokąta są zawarte w argumencie lpScrollRectangle. Części prostokąta wskazywanego przez argument lpScrollRectangle, które nie zachodzą na określony prostokąt są wypełniane znakami i atrybutami kolorów określonymi przez argument lpFill. Ograniczający prostokąt pozwala na zmianę prostokąta lpScrollRectangle oraz zaznaczonego prostokąta. Jeśli ograniczający prostokąt nie zawiera obszaru, który będzie wypełniony na podstawie wartości argumentu lpFill, oryginalne rozmiary tego obszaru nie zostaną zmienione. Jeśli przesuwane lub zaznaczone obszary przekraczają wymiary bufora ekranu konsoli, to zostaną obcięte.

Funkcja używa znaków zapisanych w formacie Unicode lub 8-bitowych znaków z bieżącej strony kodowej konsoli. Domyślna strona kodowa konsoli jest inicjalizowana na stronę kodową systemu OEM. Do zmiany strony kodowej konsoli służą funkcje » WinAPISetConsoleCP oraz » WinAPISetConsoleOutputCP. Można również użyć polecenia
chcp
 lub
mode con cp select=id_strony_kodowej
 w wierszu polecenia.

Przykład

C/C++
#include <windows.h>

int main()
{
    //prostokąt do przesunięcia
    SMALL_RECT lpScrollRectangle;
    lpScrollRectangle.Left = 0;
    lpScrollRectangle.Top = 0;
    lpScrollRectangle.Right = 19;
    lpScrollRectangle.Bottom = 19;
    //lewy górny róg nowego prostokąta
    COORD dwDestinationOrigin;
    dwDestinationOrigin.X = 10;
    dwDestinationOrigin.Y = 15;
    //atrybuty znaków
    CHAR_INFO lpFill;
    lpFill.Attributes = BACKGROUND_INTENSITY;
    lpFill.Char.AsciiChar = ' ';
    ScrollConsoleScreenBuffer( GetStdHandle( STD_OUTPUT_HANDLE ), & lpScrollRectangle, NULL, dwDestinationOrigin, & lpFill );
    //zmiana rozmiaru bufora ekranu konsoli
    COORD screenBufferSize;
    screenBufferSize.X = 50;
    screenBufferSize.X = 30;
    SetConsoleScreenBufferSize( GetStdHandle( STD_OUTPUT_HANDLE ), screenBufferSize );
    //wykonanie tych samych działań przy nowych rozmiarach bufora
    ScrollConsoleScreenBuffer( GetStdHandle( STD_OUTPUT_HANDLE ), & lpScrollRectangle, NULL, dwDestinationOrigin, & lpFill );
    return 0;
}

Wymagania

Minimalny system klientaWindows 2000 Professional (tylko aplikacje biurowe).
Minimalny system serweraWindows 2000 Server (tylko aplikacje biurowe).
NagłówekWincon.h (dołącza Windows.h)
BibliotekaKernel32.lib
DLLKernel32.dll
UNICODEScrollConsoleScreenBufferW
ANSIScrollConsoleScreenBufferA

Linki zewnętrzne