1

デバッグ/保守している C/ncurses プログラムがあります。このプログラムは ripoffline を 2 回実行します。1 回目はタイトル バーを配置し、2 回目はページの上部にメニュー バーを配置します。

いくつかのメニューをドロップダウンする必要があるため、メニューをドロップダウンする前に画面を保存します。InitMenu 関数には、次のコードがあります。

 savewin = newwin (0, 0, 0, 0);
 overwrite (curscr, savewin);
 wrefresh(savewin)

問題は、savewin がメニューと切り取られた行と共にコピーされていることですが、切り取られた行の下の画面に描画されます。これにより、破れた線が画面上に複製されます。

問題がどこにあるかを理解するだけで、しばらく時間がかかりました。今、私はそれを修正する方法がわかりません。理想的には、切り離された行なしで curscr を savewin にコピーしたいと考えています。何か案は?

4

1 に答える 1

0

curscrは物理的な表示画面の内容ですので、当然のことながら破れたセリフが含まれています。

代わりに を使用できますがstdscr、これは使用できません。copywinの代わりに使用することもできoverwriteます。これにより、ソース ウィンドウの別の位置からコピーを開始できるなど、より詳細な制御が可能になります。

于 2010-03-14T10:49:15.053 に答える