我正在為 Windows 10 撰寫一個應用程式,以在 Windows 控制臺視窗中的特定位置顯示和更新文本。該程式由控制臺視窗中的命令啟動。啟動時,它會擦除??視窗之前的內容,然后顯示其輸出,并隨著它進行更新,直到完成。退出時,它應該保留顯示的輸出,下面應該出現一個新的命令提示符。啟動、顯示和隨后的命令提示符都發生在同一個控制臺視窗中。(老派,我知道,但這是要求。)該程式是用 C 撰寫的,并使用對 PDcurses 庫的呼叫來控制游標位置并將顯示文本輸出到螢屏。該應用程式是在 Windows 10 平臺上使用 GCC/MinGW 構建的。
一切正常,直到應用程式退出,但隨后顯示輸出消失,之前的視窗內容(從應用程式啟動之前)重新出現。據我所知,這似乎是curses的默認行為,可能是由于它處理螢屏緩沖的方式。
我正在尋找覆寫這種行為的方法,但我不確定如何處理它。我可以指示 PDcurses 寫入標準螢屏緩沖區而不是備用螢屏緩沖區嗎(如果是這樣的話)?如果是這樣,如何?我應該在呼叫 endwin() 之前復制螢屏緩沖區的內容,然后將這些內容復制回螢屏緩沖區嗎?又如何?我確定這個問題已經解決了,可能已經解決了很多次,但我還沒有找到任何似乎適用于在 Windows 控制臺中運行的 C 可執行檔案的解決方案,而且我對 PDcurses 和 Windows API 庫的經驗有限. 任何幫助,將不勝感激。
uj5u.com熱心網友回復:
官方的做法是設定一個環境變數:set PDC_RESTORE_SCREEN=0. 您可以將其與set PDC_PRESERVE_SCREEN=Y防止 PDCurses 在啟動時清除螢屏結合使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403561.html
標籤:
上一篇:“LoadStringA”和“LoadStringW”有什么區別?
下一篇:IMFTransform::SetInputType()'MF_E_TRANSFORM_TYPE_NOT_SET'
