最初 Curses.getstr
呼び出しは別のウィンドウをクリアします。後の呼び出しでは発生しません。
require "curses"
Curses.init_screen
window = Curses::Window.new(10, 10, 5, 0)
window.scrollok true
Thread.new do
loop do
window.addstr rand(1000000).to_s
window.refresh
sleep 0.1
end
end
Curses.setpos 20, 0
sleep 1
# now several lines of numbers suddenly disappear
loop{ Curses.getstr }
どうすればこの行動と戦うことができますか?
回答:
回答№1は0あなたが見ているものは暗黙的です refresh()
stdscrウィンドウの-なぜなら getstr()
本当に wgetstr(stdscr)
。次のオプションがあります。
- 何かを描画する前にstdscrを手動で更新する
- stdscrではなく、入力に新しいウィンドウを使用する、および/または
- 出力にstdscrを使用します。
少なくとも、「それは私が呪いのために与える答え」ネイティブCです。