Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A képernyőpuffer egy karakter- és színadatok kétdimenziós tömbje a konzolablakban való kimenethez. Egy konzol több képernyőpufferrel is rendelkezhet. Az aktív képernyőpuffer az, amely megjelenik a képernyőn.
A rendszer egy képernyőpuffert hoz létre, amikor új konzolt hoz létre. Ha meg szeretne nyitni egy fogópontot egy konzol aktív képernyőpufferéhez, adja meg a CONOUT$ értéket a CreateFile függvény hívásában. A folyamat a CreateConsoleScreenBuffer függvénnyel további képernyőpuffereket hozhat létre a konzoljához. Az új képernyőpuffer nem aktív, amíg a leírója meg nem van adva a SetConsoleActiveScreenBuffer függvény hívásában. A képernyőpufferek azonban olvasáshoz és íráshoz is elérhetők, függetlenül attól, hogy aktívak vagy inaktívak.
Minden képernyőpuffer saját kétdimenziós karakterinformációs rekordokkal rendelkezik. Az egyes karakterek adatait egy CHAR_INFO struktúrában tárolja, amely meghatározza a Unicode- vagy ANSI-karaktert, valamint az előtér- és háttérszíneket, amelyekben a karakter megjelenik.
A képernyőpufferhez társított tulajdonságok száma egymástól függetlenül állítható be az egyes képernyőpufferekhez. Ez azt jelenti, hogy az aktív képernyőpuffer módosítása drámai hatással lehet a konzolablak megjelenésére. A képernyőpufferhez társított tulajdonságok a következők:
- Képernyőpuffer mérete karaktersorokban és oszlopokban.
- Szövegattribútumok (előtér- és háttérszínek a WriteFile vagy a WriteConsole függvény által írandó szöveg megjelenítéséhez).
- Ablak mérete és helye (a konzolképernyő pufferének téglalap alakú régiója, amely a konzolablakban jelenik meg).
- Kurzor pozíciója, megjelenése és láthatósága.
- Kimeneti módok (ENABLE_PROCESSED_OUTPUT és ENABLE_WRAP_AT_EOL_OUTPUT). A konzolkimeneti módokkal kapcsolatos további információkért lásd High-Level konzol módokat.
A képernyőpuffer létrehozásakor minden helyzetben szóköz karaktereket tartalmaz. A kurzor látható és a puffer forrásánál van elhelyezve (0,0), és az ablak a bal felső sarokban van a puffer forrásánál. A konzol képernyőpufferének méretét, az ablak méretét, a szövegattribútumokat és a kurzor megjelenését a felhasználó vagy a rendszer alapértelmezése határozza meg. A konzol képernyőpufferéhez társított különböző tulajdonságok aktuális értékeinek lekéréséhez használja a GetConsoleScreenBufferInfo, a GetConsoleCursorInfo és a GetConsoleMode függvényt.
A konzol képernyőpuffertulajdonságait módosító alkalmazásoknak saját képernyőpuffert kell létrehozniuk, vagy menteniük kell az örökölt képernyőpuffer állapotát az indítás során, és vissza kell állítaniuk a kilépéskor. Ez a kooperatív viselkedés szükséges annak biztosításához, hogy az ugyanazon a konzol munkameneten osztozó többi alkalmazásra ne legyenek hatással a változások.
Jótanács
Javasoljuk, hogy ha lehetséges, használja az alternatív puffer módot ahelyett, hogy egy második képernyőpuffert hoz létre erre a célra. Az alternatív puffer mód nagyobb kompatibilitást biztosít a távoli eszközök és más platformok között. További információért tekintse meg a klasszikus konzol API-kkal és virtuális terminállal kapcsolatos vitafórumunkat.
Kurzor megjelenése és pozíciója
A képernyőpuffer kurzora látható vagy rejtett lehet. Ha látható, a megjelenése változhat, a karaktercellák teljes kitöltésétől a cella alján vízszintes vonalként való megjelenésig. A kurzor megjelenésével és láthatóságával kapcsolatos információk lekéréséhez használja a GetConsoleCursorInfo függvényt. Ez a függvény azt jelzi, hogy a kurzor látható-e, és a kurzor megjelenését a kitöltendő karaktercellák százalékos arányaként írja le. A kurzor megjelenésének és láthatóságának beállításához használja a SetConsoleCursorInfo függvényt.
A magas szintű konzol I/O-függvényei által írt karakterek a kurzor aktuális helyén vannak megírva, és a kurzort a következő helyre irányítják. A képernyőpuffer koordinátarendszerében a kurzor aktuális pozíciójának meghatározásához használja a GetConsoleScreenBufferInfo parancsot. A SetConsoleCursorPosition használatával beállíthatja a kurzor pozícióját, és ezáltal szabályozhatja a magas szintű I/O-függvények által írt vagy visszhangzott szövegek elhelyezését. Ha áthelyezi a kurzort, az új kurzor helyén lévő szöveg felülíródik.
Megjegyzés:
Az alacsony szintű függvények használata a kurzor pozíciójának megkereséséhez nem ajánlott. Ha speciális elrendezésekhez szükséges, ajánlott virtuális terminálütemezésekkel lekérdezni ezt a pozíciót. A virtuális terminálütemezések előnyben részesítéséről további információt a klasszikus függvények és a virtuális termináldokumentum tartalmaz.
A kurzor pozíciója, megjelenése és láthatósága egymástól függetlenül van beállítva az egyes képernyőpufferekhez.
Karakterattribútumok
A karakterattribútumok két osztályra oszthatók: színre és DBCS-re. A fejlécfájlban az WinCon.h alábbi attribútumok vannak definiálva.
| Jellemző | Értelmezés |
|---|---|
| FOREGROUND_BLUE | A szöveg színe kék. |
| FOREGROUND_GREEN | A szöveg színe zöld. |
| FOREGROUND_RED | A szöveg színe piros. |
| FOREGROUND_INTENSITY | A szövegszín felerősödik. |
| BACKGROUND_BLUE | A háttérszín kék színt tartalmaz. |
| BACKGROUND_GREEN | A háttérszín zöld színt tartalmaz. |
| BACKGROUND_RED | A háttérszín piros színt tartalmaz. |
| BACKGROUND_INTENSITY | A háttérszín felerősödik. |
| COMMON_LVB_LEADING_BYTE | Kezdő bájt. |
| COMMON_LVB_TRAILING_BYTE | Záró bájt. |
| COMMON_LVB_GRID_HORIZONTAL | Felül vízszintesen. |
| COMMON_LVB_GRID_LVERTICAL | Balra függőlegesen. |
| COMMON_LVB_GRID_RVERTICAL | Jobbra függőlegesen. |
| COMMON_LVB_REVERSE_VIDEO | Előtér- és háttérattribútumok megfordítása. |
| COMMON_LVB_UNDERSCORE | Aláhúz. |
Az előtérben lévő attribútumok határozzák meg a szöveg színét. A háttérattribútumok határozzák meg a cella hátterének kitöltéséhez használt színt. A többi attribútumot a DBCS használja.
Az alkalmazások az előtér- és háttérállandókat kombinálva különböző színeket érhetnek el. Az alábbi kombináció például világos ciánszöveget eredményez kék háttéren.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE
Ha nincs megadva háttérállandó, a háttér fekete, és ha nincs megadva előtérállandó, a szöveg fekete. Az alábbi kombináció például fekete szöveget eredményez fehér háttéren. A fehér háttérhez piros, zöld és kék szín van megadva. Az előtérben nincs megadva jelölőszín, ezért fekete.
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
Minden képernyőpuffer karaktercellája tárolja a cella előterének (szövegének) és hátterének rajzolásához használt színek színattribútumait. Az alkalmazások egyenként állíthatják be az egyes karaktercellák színadatait, és az adatokat az egyes cellák CHAR_INFO struktúrájának attribútumai között tárolhatják. Az egyes képernyőpufferek aktuális szövegattribútumait a rendszer a magas szintű függvények által később írt vagy visszhangzott karakterekhez használja.
Az alkalmazások a GetConsoleScreenBufferInfo segítségével határozhatják meg a képernyőpuffer aktuális szöveges attribútumait, valamint a SetConsoleTextAttribute függvényt a karakterattribútumok beállításához. A képernyőpuffer attribútumainak módosítása nem befolyásolja a korábban írt karakterek megjelenítését. Ezek a szöveges attribútumok nem befolyásolják az alacsony szintű konzol I/O-függvényei (például a WriteConsoleOutput vagy a WriteConsoleOutputCharacter függvény) által írt karaktereket, amelyek vagy explicit módon adják meg az attribútumokat az egyes írt cellákhoz, vagy változatlanul hagyják az attribútumokat.
Megjegyzés:
Az alacsony szintű függvények használata az alapértelmezett és adott szövegattribútumok manipulálására nem ajánlott. A szövegattribútumok beállításához ajánlott virtuális terminálütemezéseket használni. A virtuális terminálütemezések előnyben részesítéséről további információt a klasszikus függvények és a virtuális termináldokumentum tartalmaz.
Betűtípusattribútumok
A GetCurrentConsoleFont függvény adatokat kér le az aktuális konzol betűtípusáról. A CONSOLE_FONT_INFO struktúrában tárolt információk tartalmazzák a betűtípus egyes karaktereinek szélességét és magasságát.
A GetConsoleFontSize függvény lekéri a megadott konzolképernyő-puffer által használt betűtípus méretét.
Megjegyzés:
A függvények használata a betűtípusok információinak megkereséséhez és kezeléséhez nem ajánlott. Javasoljuk, hogy a parancssori alkalmazásokat betűsemleges módon működtesse, hogy biztosítsa a platformfüggetlen kompatibilitást, valamint a gazdakörnyezetekkel való kompatibilitást, amelyek lehetővé teszik a felhasználó számára a betűtípus testreszabását. További információ a felhasználói beállításokról és a gazdagépkörnyezetekről, beleértve a terminálokat is, tekintse meg az ökoszisztéma ütemtervét.