低階主控台輸出函式

重要

本文件說明已不再是生態系統 藍圖一部分的控制台平臺功能。 我們不建議您在新產品中使用此內容,但我們將繼續支持無限期的未來現有使用量。 我們慣用的新式解決方案著重於 虛擬終端機序列 ,以在跨平臺案例中達到最大相容性。 您可以在傳統 主控台與虛擬終端機 檔中找到此設計決策的詳細資訊。

低階控制台輸出函式可讓您直接存取螢幕緩衝區的字元數據格。 一組函式會從控制台畫面緩衝區的任何位置開始讀取或寫入連續單元格。 另一組函式會讀取或寫入矩形單元格區塊。

下列函式會從螢幕緩衝區中讀取或寫入指定的連續字元儲存格數目,從指定的儲存格開始。

函式 描述
ReadConsoleOutputCharacter 從螢幕緩衝區複製 Unicode 或 ANSI 字元的字串。
WriteConsoleOutputCharacter 將 Unicode 或 ANSI 字元的字串寫入螢幕緩衝區。
ReadConsoleOutputAttribute 從螢幕緩衝區複製文字和背景色彩屬性的字串。
WriteConsoleOutputAttribute 將文字和背景色彩屬性的字串寫入螢幕緩衝區。
FillConsoleOutputCharacter 將單一 Unicode 或 ANSI 字元寫入螢幕緩衝區中指定數目的連續儲存格。
FillConsoleOutputAttribute 將文字和背景色彩屬性組合寫入螢幕緩衝區中指定數目的連續儲存格。

針對所有這些函式,當遇到數據列的最後一個單元格時,讀取或寫入會包裝到下一個數據列的第一個單元格。 當遇到主控台畫面緩衝區的最後一列結尾時,寫入函式會捨棄所有未寫入的字元或屬性,而讀取函式會報告實際寫入的字元或屬性數目。

下列函式會讀取或寫入螢幕緩衝區中指定位置的矩形字元儲存格區塊。

函式 描述
ReadConsoleOutput 將字元和色彩數據從指定的螢幕緩衝區區塊複製到目的地緩衝區中的指定區塊。
WriteConsoleOutput 將字元和色彩數據寫入至來源緩衝區中指定區塊中指定區塊的螢幕緩衝區單元格。

這些函式會將螢幕緩衝區和來源或目的地緩衝區視為CHAR_INFO結構的二維數位列(包含每個單元格的字元和色彩屬性數據)。 函式會指定來源或目的緩衝區之字元單元格的寬度和高度,而緩衝區的指標會被視為二維數位之源數據格 (0,0) 的指標。 函式會使用 SMALL_RECT 結構來指定控制台畫面緩衝區中要存取的矩形,而來源或目的地緩衝區中左上方單元格的座標會決定該緩衝區中對應矩形的位置。

這些函式會自動裁剪指定的螢幕緩衝區矩形,以符合控制台畫面緩衝區的界限。 例如,如果矩形指定右下角座標(數據行 100、第 50 列)和控制台螢幕緩衝區只有 80 欄寬,則會裁剪座標,使其為 (第 79 欄,第 50 欄)。 同樣地,這個調整后的矩形會再次裁剪以符合來源或目的地緩衝區的界限。 指定讀取或寫入之實際矩形的螢幕緩衝區座標。 如需使用這些函式的範例,請參閱 讀取和寫入字元和屬性區塊

此圖顯示 ReadConsoleOutput 作業,其中裁剪會在從控制台畫面緩衝區讀取區塊時發生,並在區塊複製到目的地緩衝區時再次發生。 函式會報告其複製的實際螢幕緩衝區矩形。

screen buffer window with destination buffer