2011-03-28 9 views
3

私はBASHのようなコマンドインタプリタを書いていますが、\の後に改行が続き、入力ストリームの続きを意味しています。どのように私はWin32でそれを実装できますか?Win32コンソール - 最後の行へのバックスペース

ENABLE_LINE_INPUTでコンソールモードを使用している場合、ユーザはバックスペースを押して前の行に戻ることはできません。 Windowsは彼がそうすることを妨げる。しかし、ENABLE_LINE_INPUTを設定しないと、カーソルを手動で再配置する必要があります。これは、(1)ユーザーが入力ストリームをリダイレクトしている可能性があり、(2)競合状態になりやすいこと、私はできるならば、Windowsにそれをやらせてもらいたい。

改行をして食べる方法はありますか?


編集:

これは文書化されていないCSRSSポート要求を必要とするならば、私はまだ興味があります!

+0

私が知っているわけではありません。 –

+0

これはおそらく、 'pInputControl'パラメータに' nInitialChars'を設定することによって、 'ReadConsole'の" Unicode "バージョンを使用することによって行うことができます。 – John

+0

@Amigable:ええ、私はそれを恐れていました... @John:Hm ... 'ENABLE_LINE_INPUT'モードの有無にかかわらず' pInputControl'の値を 'ReadConsoleW'に渡そうとしましたが、差異を参照してください:\ – Mehrdad

答えて

0

これをウィンドウで実行すると仮定すると、コマンドプロンプトはフルスクリーンではなくデフォルトで実行されますが、大きなテキストボックスを持つGUIアプリケーションを作成できます。ユーザーはテキストボックスに入力し、入力したものを解析して同じボックスに出力することができます(効果的にWin32コンソールをエミュレートします)。

このようにして、コンソールの動作方法を設定するルールは、あなた次第です。

私はこれを誤解しているかもしれませんが、私はXP以降のWin32コンソールはこれと全く同じように動作し、stdoutの出力を待ち受けます。あなたが同じことをすることができない理由はないはずです。

希望しました。

+0

提案していただきありがとうございます。残念なことに、私の記事のコメントで述べたように、「私のプログラムの全ポイントは、システムの残りの部分と多くの点で統合されているため、標準のWindows端末を使用することでした。それは "ネイティブ"のコンソールではないので(つまり、OSによってコンソールアプリケーションとして認識されないため)、ユーザーとOSをだます方法を模索しているわけではありませんそれは本当ではないことを考えている。 :( – Mehrdad

+1

次にコンソールベースのテキストエディタの仕組みを見てみましょう。これは本質的にコマンドを受け入れる必要があるためです。コマンドをバッファし、行をトレースする必要があるときにはカーソル位置を自分で操作する必要があります – bryanegr

+0

ええ、私は答えが...恐れていた...助けてくれてありがとう。 – Mehrdad

関連する問題