Bagikan melalui


Menggulir Penyangga Layar

Penting

Dokumen ini menjelaskan fungsionalitas platform konsol yang tidak lagi menjadi bagian dari peta jalan ekosistem kami. Kami tidak menyarankan penggunaan konten ini dalam produk baru, tetapi kami akan terus mendukung penggunaan yang ada untuk masa depan yang tidak terbatas. Solusi modern pilihan kami berfokus pada urutan terminal virtual untuk kompatibilitas maksimum dalam skenario lintas platform. Anda dapat menemukan informasi selengkapnya tentang keputusan desain ini di konsol klasik vs. dokumen terminal virtual kami.

Jendela konsol menampilkan sebagian buffer layar aktif. Setiap buffer layar mempertahankan persegi panjang jendela saat ini sendiri yang menentukan koordinat sel karakter kiri atas dan kanan bawah yang akan ditampilkan di jendela konsol. Untuk menentukan persegi panjang jendela saat ini dari buffer layar, gunakan GetConsoleScreenBufferInfo. Saat buffer layar dibuat, sudut kiri atas jendelanya berada di sudut kiri atas buffer layar konsol pada (0,0).

Persegi panjang jendela dapat berubah untuk menampilkan berbagai bagian buffer layar konsol. Persegi panjang jendela buffer layar dapat berubah dalam situasi berikut:

  • Ketika SetConsoleWindowInfo dipanggil untuk menentukan persegi panjang jendela baru, setConsoleWindowInfo menggulir tampilan buffer layar konsol dengan mengubah posisi persegi panjang jendela tanpa mengubah ukuran jendela. Untuk contoh menggulir konten jendela, lihat Menggulir Jendela Buffer Layar.

    screen buffer window panning around large buffer of content

  • Saat menggunakan fungsi WriteFile untuk menulis ke buffer layar dengan bungkus pada mode output end-of-line (EOL) diaktifkan, persegi panjang jendela bergeser secara otomatis, sehingga kursor selalu ditampilkan.

  • Ketika fungsi SetConsoleCursorPosition menentukan posisi kursor baru yang berada di luar batas persegi jendela saat ini, persegi panjang jendela bergeser secara otomatis untuk menampilkan kursor.

  • Saat pengguna mengubah ukuran jendela konsol atau menggunakan bilah gulir jendela, persegi panjang jendela buffer layar aktif dapat berubah. Perubahan ini tidak dilaporkan sebagai peristiwa pengubahan ukuran jendela di buffer input.

Dalam setiap situasi ini, persegi panjang jendela bergeser untuk menampilkan bagian yang berbeda dari buffer layar konsol, tetapi konten buffer layar konsol tetap berada di posisi yang sama. Situasi berikut dapat menyebabkan konten buffer layar konsol bergeser:

  • Ketika fungsi ScrollConsoleScreenBuffer dipanggil, blok persegi panjang disalin dari satu bagian buffer layar ke bagian lain.
  • Saat menggunakan WriteFile untuk menulis ke buffer layar dengan pembungkus pada mode output EOL diaktifkan, konten buffer layar konsol menggulir secara otomatis ketika akhir buffer layar konsol ditemui. Pengguliran ini membuang baris atas buffer layar konsol.

ScrollConsoleScreenBuffer menentukan persegi panjang buffer layar konsol yang dipindahkan dan koordinat kiri atas baru tempat persegi disalin. Fungsi ini dapat menggulir sebagian atau seluruh konten buffer layar konsol.

Ilustrasi menunjukkan operasi ScrollConsoleScreenBuffer yang menggulir seluruh konten buffer layar konsol ke atas oleh beberapa baris. Konten baris atas dibuang, dan baris bawah diisi dengan karakter dan warna yang ditentukan.

screen buffer window scrolling content off top to discard

Efek ScrollConsoleScreenBuffer dapat dibatasi dengan menentukan persegi panjang kliping opsional sehingga konten buffer layar konsol di luar persegi panjang kliping tidak berubah. Efek kliping adalah membuat subwindow (persegi panjang kliping) yang kontennya digulir tanpa memengaruhi buffer layar konsol lainnya. Untuk contoh yang menggunakan ScrollConsoleScreenBuffer, lihat Menggulir Konten Buffer Layar.