• <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

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            控制臺屏幕緩沖區

            屏幕緩沖區是一個在控制臺窗口輸出的二維字符及顏色數組。一個控制臺可以包含多個屏幕緩沖區,當前屏幕緩沖區指的是顯示在屏幕上的那個緩沖區。

              系統在創建新控制臺時就會創建一個屏幕緩沖區。調用CreateFile函數指定CONOUT$值便可打開控制臺的當前屏幕緩沖區。程序可以CreateConsoleScreenBuffer 函數為它的控制臺創建額外的屏幕緩沖區。一個新的屏幕緩沖區用自己的句柄調用SetConsoleActiveScreenBuffer函數便可設置為當前緩沖區。然而,不管是否是當前緩沖區,都可以被訪問以進行讀取及寫入操作。

              每個屏幕緩沖區都有自己的二維字符信息記錄數組。每個字符信息都被存儲在CHAR_INFO結構中,該結構中指定了UnicodeANSI字符以及顯示字符時的前景及背景顏色。

              每個屏幕緩沖區的關聯屬性都可以被單獨設置。這也意味著變更控制臺的當前屏幕緩沖區的效果會很有意思。屏幕緩沖區的關聯屬性包括:

            • 屏幕緩沖區大小,按字符行列記。
            • 文本屬性(WriteFileWriteConsole函數用于顯示文本所用的前景及背景)。
            • 窗口大小及定位(在控制臺窗口中顯示的屏幕緩沖區的矩形區域)。
            • 光標位置,外觀及可見度。
            • 輸出模式(ENABLE_PROCESSED_OUTPUTENABLE_WRAP_AT_EOL_OUTPUT)。關于控制臺輸出模式的更多信息,請參見高級控制臺模式

              屏幕緩沖區創建時,不含任何內容。光標可見,并處在緩沖區的原點(0,0),并且窗口的左上角與緩沖區原點重合。控制臺屏幕緩沖區大小,窗口大小,文本屬性及光標外觀這些都是由系統默認或用戶設置所決定的,要確定當前這些不同的屬性值,可以通過調用GetConsoleScreenBufferInfoGetConsoleCursorInfoGetConsoleMode函數來獲取。

              要改變任意控制臺屏幕緩沖區屬性的應用程序應該或者創建自己的屏幕緩沖區,或者在開始時保存繼承的屏幕緩沖區狀態并在退出時恢復。

            光標外觀及定位

              屏幕緩沖區的光標可以是可見的或者隱藏的。可見時,它的外觀可以由填滿整個文本單元格到單元格底部的橫線。要獲取光標的外觀及可見性的有關信息,可以調用GetConsoleCursorInfo函數。通過該函數可以知曉光標是否可見及光標所占單元格的百分比。而SetConsoleCursorInfo可以用來設置光標的這些信息。

              通過高級控制臺I/O函數寫入的字符被輸出到當前的光標位置,然后光標后移。要確定當前光標的位置(按屏幕緩沖區的坐標系計),可以調用GetConsoleScreenBufferInfo。當然,你可以通過SetConsoleCursorPosition來設置光標的當前位置,并以此來控制高級I/O寫入或回顯文本的位置。如果移動了光標,新位置的文本將會被重寫(覆蓋)。

              各屏幕緩沖區間光標位置、外觀及可見性的設置是無關的。

            字符屬性

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

            屬性

            含義

            FOREGROUND_BLUE

            文本顏色包含藍色

            FOREGROUND_GREEN

            文本顏色包含綠色

            FOREGROUND_RED

            文本顏色包含紅色

            FOREGROUND_INTENSITY

            文本顏色加亮

            BACKGROUND_BLUE

            背景含藍色

            BACKGROUND_GREEN

            背景含綠色

            BACKGROUND_RED

            背景含紅色

            BACKGROUND_INTENSITY

            背景加亮

            COMMON_LVB_LEADING_BYTE

            首字節

            COMMON_LVB_TRAILING_BYTE

            末字節

            COMMON_LVB_GRID_HORIZONTAL

            首行

            COMMON_LVB_GRID_LVERTICAL

            左列

            COMMON_LVB_GRID_RVERTICAL

            右列

            COMMON_LVB_REVERSE_VIDEO

            翻轉前景及背景屬性

            COMMON_LVB_UNDERSCORE

            下劃線


              

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

              應用程序可以通過設置背景及前景色實現不同的配色方案。例如,如下組合實現藍背景、亮青色文本。

            FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

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

            BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED

              每個屏幕緩沖區字符單元都存儲著背景及所繪文本的顏色屬性。應用程序可以單獨為每個單元格設置顏色屬性,并存儲在每個單元的CHAR_INFO結構的Attributes成員中。當前屏幕緩沖區的文本屬性是用來為高級函數輸出或回顯用的。

              應用程序通過GetConsoleScreenBufferInfo 確定屏幕緩沖區的當前文本屬性,并調用SetConsoleTextAttribute 函數來設置字符屬性。變更屏幕緩沖區屬性并不影響原來所顯示的字符。這些文本屬性不會影響低級控制臺I/O的輸出(如WriteConsoleOutput,或WriteConsoleOutpubCharacter函數),這些低級函數需要明確指定要輸出到的單元格的屬性,或者保留原屬性。

            字體屬性

              GetCurrentConsoleFont 獲取當前控制臺的字體,并存儲于CONSOLE_FONT_INFO結構中,其中包括字體中每個字符的高度與寬度信息。

              GetConsoleFontSize 獲取指定控制臺緩沖區的字體大小。

             

            posted on 2008-11-26 18:19 肥仔 閱讀(3481) 評論(0)  編輯 收藏 引用 所屬分類: Windows開發

            久久AV无码精品人妻糸列| 精品国产婷婷久久久| 亚洲欧美精品一区久久中文字幕| 久久777国产线看观看精品| 综合久久国产九一剧情麻豆| 色婷婷噜噜久久国产精品12p| 久久久久久久综合日本| 久久精品99无色码中文字幕| 久久男人中文字幕资源站| 色99久久久久高潮综合影院| 亚洲午夜精品久久久久久浪潮| 欧美一区二区久久精品| 久久人人爽人人爽人人爽| 精品久久久久久久国产潘金莲| 中文字幕久久精品| 无码人妻久久一区二区三区免费丨 | 无码人妻久久一区二区三区| 亚洲AV无码久久寂寞少妇| 国产欧美久久一区二区| 精品久久久久久无码免费| 午夜精品久久久久9999高清| 香蕉久久av一区二区三区| 国产精品一区二区久久| 久久男人中文字幕资源站| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲欧洲久久av| 久久亚洲欧美国产精品| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产精品99久久久久久宅男| 久久综合视频网| 久久精品成人免费看| 性做久久久久久免费观看| 久久精品国产亚洲AV电影| 久久久久亚洲爆乳少妇无| 久久精品人人槡人妻人人玩AV| 久久精品免费大片国产大片| 狠狠综合久久AV一区二区三区| 麻豆精品久久精品色综合| 精品久久久一二三区| 情人伊人久久综合亚洲| 综合久久国产九一剧情麻豆|