2010-12-15 11 views
1

私は、最小限のテキストエディタを作成しようとしています。これは、点滅するキャレット、黒い背景、テキストを移動するための矢印キー、バックスペースの削除などしかないということです。 。私はRenderWindowを作成しました。テキスト用のグローバル文字列バッファがあり、Visual2Dクラスを使用して画面上に可視化しています(VC2010およびSFML .NETパッケージを使用してC#で開発中です)。SFMLフルスクリーンテキストエディタ

基本的には、キー入力をキャッチし、文字、数字またはその他の書かれた記号が描画に役立つかどうかをチェックし、RenderWindowの描画を使用して画面上に永続的に視覚化される文字列バッファからそれらを加算または減算します。

ここで問題は、矢印で制御された正しいキャレット移動を実装する方法です。誰かがダウン/アップ/左/右矢印を使用してテキストの画面全体を移動したい場合。 1行のテキストの左/右の動きは簡単ですが、どのキャラクタを後でキャレットにするべきかを知るためのカウンタを実装することがあります。それにもかかわらず、最終的に私はスクリーンが終了したラインを打ち破らなければならないでしょう。それでは、もし誰かがラインを上げたり上げたりしたいと思ったら、キャレットをどこでレンダリングするか、後でテキストの一部を追加または削除することができます。あるいは私のアプローチは完全に間違っていますか?お知らせ下さい。

答えて

2

インデックスを保持するオブジェクトのリストをメインの文字列バッファに追加して格納します。改行がバッファに追加されるたびに、現在のLineオブジェクトを更新し、新しい行に新しい行を追加します。

キャレットを移動するには、現在の行を探し、必要に応じて行を上下に移動します。

異なるアプローチでは、各行を別々の文字列に格納することがありますが、これは行にまたがる操作を実行するときに複雑さを増します。

+0

ありがとう、私は今それをテストしています:) – Tobiasz