通過(guò)Windows API函數(shù)獲取控制臺(tái)屏幕緩存信息的方法
大家好!今天我們一起研究一下如何通過(guò)Windows API函數(shù)來(lái)獲取控制臺(tái)屏幕緩存的信息。控制臺(tái)屏幕可以被視為顯示前端,而控制臺(tái)緩存則是保存數(shù)據(jù)的后端。本教程將介紹如何使用GetConsoleScre
大家好!今天我們一起研究一下如何通過(guò)Windows API函數(shù)來(lái)獲取控制臺(tái)屏幕緩存的信息。控制臺(tái)屏幕可以被視為顯示前端,而控制臺(tái)緩存則是保存數(shù)據(jù)的后端。本教程將介紹如何使用GetConsoleScreenBufferInfo和GetConsoleScreenBufferInfoEx函數(shù)來(lái)獲取控制臺(tái)屏幕緩存的相關(guān)信息。
如果您覺(jué)得這篇教程有幫助,請(qǐng)為我投上寶貴的一票,謝謝!同時(shí),如果您希望每天都能看到更多類似的干貨教程,請(qǐng)給個(gè)“關(guān)注”吧!
步驟一:創(chuàng)建控制臺(tái)項(xiàng)目
首先,打開(kāi)VS2017,新建一個(gè)名為“ConsoleDemo3”的“Windows控制臺(tái)應(yīng)用程序”項(xiàng)目。具體的項(xiàng)目創(chuàng)建方法可以參考相關(guān)經(jīng)驗(yàn)。
創(chuàng)建完畢后,在“ConsoleDemo3.cpp”文件中包含"Windows.h"頭文件,并在main函數(shù)中調(diào)用system函數(shù),以防止控制臺(tái)自動(dòng)退出。代碼編寫(xiě)完成后,進(jìn)行調(diào)試運(yùn)行程序。
步驟二:設(shè)置控制臺(tái)屬性
程序啟動(dòng)后,單擊控制臺(tái)窗口左上角的應(yīng)用程序圖標(biāo),打開(kāi)系統(tǒng)菜單。在彈出菜單中,選擇“屬性”,打開(kāi)控制臺(tái)的“屬性窗口”。
在控制臺(tái)屬性窗口中,切換到“布局”選項(xiàng)卡。在這個(gè)選項(xiàng)卡頁(yè)面中,您可以設(shè)置“屏幕緩沖區(qū)大小”、“窗口大小”和“窗口位置”。如果勾選了“由系統(tǒng)定位窗口”,那么控制臺(tái)窗口的位置將由系統(tǒng)決定,設(shè)置的窗口位置會(huì)被忽略。
注意,在設(shè)置“屏幕緩沖區(qū)大小”和“窗口大小”時(shí),寬度和高度的單位是“字符個(gè)數(shù)”,而非“像素”。因此,在計(jì)算時(shí)一定要注意轉(zhuǎn)換。
查看完控制臺(tái)屬性后,關(guān)閉屬性窗口并退出控制臺(tái)程序,返回到“ConsoleDemo3.cpp”源代碼文件中。
步驟三:獲取控制臺(tái)屏幕緩存信息
在main函數(shù)之上,定義一個(gè)名為“tx_console_print_buffer_info”的函數(shù)。該函數(shù)使用GetConsoleScreenBufferInfo函數(shù)來(lái)獲取控制臺(tái)屏幕緩存的信息,并通過(guò)printf函數(shù)將這些信息輸出到控制臺(tái)中。
在main函數(shù)中添加代碼來(lái)測(cè)試tx_console_print_buffer_info函數(shù),然后進(jìn)行調(diào)試運(yùn)行程序。在彈出的控制臺(tái)窗口中,您可以看到當(dāng)前屏幕緩沖區(qū)的信息。此時(shí),您可以查看控制臺(tái)窗口的屬性信息,并與輸出參數(shù)對(duì)照著觀察。您會(huì)發(fā)現(xiàn)“屏幕緩沖區(qū)大小”是相同的,“控制臺(tái)緩存相對(duì)于顯示窗口左上角的坐標(biāo)”其實(shí)就是控制臺(tái)屏幕區(qū)域,即屬性窗口中的“窗口大小”。
關(guān)閉控制臺(tái)窗口返回到“ConsoleDemo3.cpp”文件中,繼續(xù)在tx_console_print_buffer_info函數(shù)之后定義一個(gè)名為“tx_console_print_buffer_ex”的函數(shù)。該函數(shù)使用GetConsoleScreenBufferInfoEx函數(shù)來(lái)獲取更多的控制臺(tái)屏幕緩存信息,并通過(guò)printf函數(shù)格式化輸出這些信息。
在main函數(shù)中添加代碼來(lái)測(cè)試tx_console_print_buffer_ex函數(shù),然后進(jìn)行調(diào)試運(yùn)行程序。在彈出的控制臺(tái)窗口中,您可以看到更多的屏幕緩沖區(qū)信息。其中,顏色表的值實(shí)際上是無(wú)效值,因?yàn)槟€沒(méi)有為控制臺(tái)指定顏色表數(shù)據(jù)。
至此,獲得控制臺(tái)屏幕緩存信息的方法就介紹完畢了。下一篇文章,我們將繼續(xù)研究“控制臺(tái)中的字體”。敬請(qǐng)期待!
享受學(xué)習(xí)吧!