• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            控制臺(tái)屏幕緩沖區(qū)

            屏幕緩沖區(qū)是一個(gè)在控制臺(tái)窗口輸出的二維字符及顏色數(shù)組。一個(gè)控制臺(tái)可以包含多個(gè)屏幕緩沖區(qū),當(dāng)前屏幕緩沖區(qū)指的是顯示在屏幕上的那個(gè)緩沖區(qū)。

              系統(tǒng)在創(chuàng)建新控制臺(tái)時(shí)就會(huì)創(chuàng)建一個(gè)屏幕緩沖區(qū)。調(diào)用CreateFile函數(shù)指定CONOUT$值便可打開(kāi)控制臺(tái)的當(dāng)前屏幕緩沖區(qū)。程序可以CreateConsoleScreenBuffer 函數(shù)為它的控制臺(tái)創(chuàng)建額外的屏幕緩沖區(qū)。一個(gè)新的屏幕緩沖區(qū)用自己的句柄調(diào)用SetConsoleActiveScreenBuffer函數(shù)便可設(shè)置為當(dāng)前緩沖區(qū)。然而,不管是否是當(dāng)前緩沖區(qū),都可以被訪問(wèn)以進(jìn)行讀取及寫入操作。

              每個(gè)屏幕緩沖區(qū)都有自己的二維字符信息記錄數(shù)組。每個(gè)字符信息都被存儲(chǔ)在CHAR_INFO結(jié)構(gòu)中,該結(jié)構(gòu)中指定了UnicodeANSI字符以及顯示字符時(shí)的前景及背景顏色。

              每個(gè)屏幕緩沖區(qū)的關(guān)聯(lián)屬性都可以被單獨(dú)設(shè)置。這也意味著變更控制臺(tái)的當(dāng)前屏幕緩沖區(qū)的效果會(huì)很有意思。屏幕緩沖區(qū)的關(guān)聯(lián)屬性包括:

            • 屏幕緩沖區(qū)大小,按字符行列記。
            • 文本屬性(WriteFileWriteConsole函數(shù)用于顯示文本所用的前景及背景)。
            • 窗口大小及定位(在控制臺(tái)窗口中顯示的屏幕緩沖區(qū)的矩形區(qū)域)。
            • 光標(biāo)位置,外觀及可見(jiàn)度。
            • 輸出模式(ENABLE_PROCESSED_OUTPUTENABLE_WRAP_AT_EOL_OUTPUT)。關(guān)于控制臺(tái)輸出模式的更多信息,請(qǐng)參見(jiàn)高級(jí)控制臺(tái)模式

              屏幕緩沖區(qū)創(chuàng)建時(shí),不含任何內(nèi)容。光標(biāo)可見(jiàn),并處在緩沖區(qū)的原點(diǎn)(0,0),并且窗口的左上角與緩沖區(qū)原點(diǎn)重合。控制臺(tái)屏幕緩沖區(qū)大小,窗口大小,文本屬性及光標(biāo)外觀這些都是由系統(tǒng)默認(rèn)或用戶設(shè)置所決定的,要確定當(dāng)前這些不同的屬性值,可以通過(guò)調(diào)用GetConsoleScreenBufferInfoGetConsoleCursorInfoGetConsoleMode函數(shù)來(lái)獲取。

              要改變?nèi)我饪刂婆_(tái)屏幕緩沖區(qū)屬性的應(yīng)用程序應(yīng)該或者創(chuàng)建自己的屏幕緩沖區(qū),或者在開(kāi)始時(shí)保存繼承的屏幕緩沖區(qū)狀態(tài)并在退出時(shí)恢復(fù)。

            光標(biāo)外觀及定位

              屏幕緩沖區(qū)的光標(biāo)可以是可見(jiàn)的或者隱藏的。可見(jiàn)時(shí),它的外觀可以由填滿整個(gè)文本單元格到單元格底部的橫線。要獲取光標(biāo)的外觀及可見(jiàn)性的有關(guān)信息,可以調(diào)用GetConsoleCursorInfo函數(shù)。通過(guò)該函數(shù)可以知曉光標(biāo)是否可見(jiàn)及光標(biāo)所占單元格的百分比。而SetConsoleCursorInfo可以用來(lái)設(shè)置光標(biāo)的這些信息。

              通過(guò)高級(jí)控制臺(tái)I/O函數(shù)寫入的字符被輸出到當(dāng)前的光標(biāo)位置,然后光標(biāo)后移。要確定當(dāng)前光標(biāo)的位置(按屏幕緩沖區(qū)的坐標(biāo)系計(jì)),可以調(diào)用GetConsoleScreenBufferInfo。當(dāng)然,你可以通過(guò)SetConsoleCursorPosition來(lái)設(shè)置光標(biāo)的當(dāng)前位置,并以此來(lái)控制高級(jí)I/O寫入或回顯文本的位置。如果移動(dòng)了光標(biāo),新位置的文本將會(huì)被重寫(覆蓋)。

              各屏幕緩沖區(qū)間光標(biāo)位置、外觀及可見(jiàn)性的設(shè)置是無(wú)關(guān)的。

            字符屬性

              字符屬性可以分為兩類:顏色和DBCS,以下屬性在Wincon.h中有定義:

            屬性

            含義

            FOREGROUND_BLUE

            文本顏色包含藍(lán)色

            FOREGROUND_GREEN

            文本顏色包含綠色

            FOREGROUND_RED

            文本顏色包含紅色

            FOREGROUND_INTENSITY

            文本顏色加亮

            BACKGROUND_BLUE

            背景含藍(lán)色

            BACKGROUND_GREEN

            背景含綠色

            BACKGROUND_RED

            背景含紅色

            BACKGROUND_INTENSITY

            背景加亮

            COMMON_LVB_LEADING_BYTE

            首字節(jié)

            COMMON_LVB_TRAILING_BYTE

            末字節(jié)

            COMMON_LVB_GRID_HORIZONTAL

            首行

            COMMON_LVB_GRID_LVERTICAL

            左列

            COMMON_LVB_GRID_RVERTICAL

            右列

            COMMON_LVB_REVERSE_VIDEO

            翻轉(zhuǎn)前景及背景屬性

            COMMON_LVB_UNDERSCORE

            下劃線


              

              前景屬性指定文本顏色,背景屬性指定單元格背景顏色,其他屬性與DBCS一起使用。

              應(yīng)用程序可以通過(guò)設(shè)置背景及前景色實(shí)現(xiàn)不同的配色方案。例如,如下組合實(shí)現(xiàn)藍(lán)背景、亮青色文本。

            FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

              如果未指定背景,背景為黑色,如果不指定前景,文本為黑色。例如如下組合聲明白背景與黑文本。

            BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED

              每個(gè)屏幕緩沖區(qū)字符單元都存儲(chǔ)著背景及所繪文本的顏色屬性。應(yīng)用程序可以單獨(dú)為每個(gè)單元格設(shè)置顏色屬性,并存儲(chǔ)在每個(gè)單元的CHAR_INFO結(jié)構(gòu)的Attributes成員中。當(dāng)前屏幕緩沖區(qū)的文本屬性是用來(lái)為高級(jí)函數(shù)輸出或回顯用的。

              應(yīng)用程序通過(guò)GetConsoleScreenBufferInfo 確定屏幕緩沖區(qū)的當(dāng)前文本屬性,并調(diào)用SetConsoleTextAttribute 函數(shù)來(lái)設(shè)置字符屬性。變更屏幕緩沖區(qū)屬性并不影響原來(lái)所顯示的字符。這些文本屬性不會(huì)影響低級(jí)控制臺(tái)I/O的輸出(如WriteConsoleOutput,或WriteConsoleOutpubCharacter函數(shù)),這些低級(jí)函數(shù)需要明確指定要輸出到的單元格的屬性,或者保留原屬性。

            字體屬性

              GetCurrentConsoleFont 獲取當(dāng)前控制臺(tái)的字體,并存儲(chǔ)于CONSOLE_FONT_INFO結(jié)構(gòu)中,其中包括字體中每個(gè)字符的高度與寬度信息。

              GetConsoleFontSize 獲取指定控制臺(tái)緩沖區(qū)的字體大小。

             

            posted on 2008-11-26 18:19 肥仔 閱讀(3499) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows開(kāi)發(fā)

            97久久精品国产精品青草| 久久久久久国产a免费观看不卡| 久久久久久伊人高潮影院| 中文字幕久久精品无码| 国产∨亚洲V天堂无码久久久| 97久久综合精品久久久综合 | 久久久久国产精品麻豆AR影院| 久久综合狠狠综合久久97色| 99精品久久久久久久婷婷 | 一级做a爰片久久毛片人呢| 久久本道久久综合伊人| 色婷婷综合久久久中文字幕| 久久久精品日本一区二区三区| 无码人妻精品一区二区三区久久| 久久青青草原综合伊人| 久久国产精品无| 精品国产91久久久久久久a| 久久香蕉超碰97国产精品| 色婷婷狠狠久久综合五月| 亚洲国产精久久久久久久| 久久久无码一区二区三区| 欧美精品国产综合久久| 看全色黄大色大片免费久久久 | 亚洲精品无码久久毛片| 国产精品成人无码久久久久久| 无码国内精品久久人妻| 99久久99久久精品国产片果冻| 久久综合一区二区无码| 久久精品这里只有精99品| 亚洲午夜精品久久久久久人妖| 久久国产精品无码一区二区三区 | 国产精品99久久免费观看| 久久久精品国产| 7777精品伊人久久久大香线蕉| 激情五月综合综合久久69| 亚洲国产精品久久| 精品国产乱码久久久久久浪潮| 青青国产成人久久91网| 精品多毛少妇人妻AV免费久久| 国产精品成人久久久久三级午夜电影| 狠狠色丁香婷婷久久综合不卡|