0

これは GUI アプリケーション (実際には MFC) です。次のようなプロンプトを表示できるコマンド ウィンドウが必要です。

好きなポルノスターの名前:

ユーザーは、次のようなプロンプトの後にテキストを入力できる必要があります。

好きなポルノスターの名前: Raven Riley

しかし、ユーザーがカーソルをプロンプト領域に移動できないようにする必要があります。また、次のことを防ぐために、ユーザーがプロンプトにバックスペースを入れないようにする必要があります。

Rrraven Rrrileey Ruuuulez !!! 好きなポルノスターの名前:

また、テキストの選択などを制御する必要があります。最後に、ユーザーが入力したテキスト (プロンプト テキストを除く) のみを問題なく取得できるはずです。

独自のウィンドウ クラスを最初から作成する (つまり、CWnd から継承する) 方がよいでしょうか、それとも Windows EDIT コントロールを再利用する (つまり、CEdit から継承する) べきですか?

同様のコマンド ウィンドウが、AutoCAD と Visual Studio (デバッグ モード) で表示されます。

4

2 に答える 2

3

CEdit のサブクラスを作成し、フィルタリングのキープレスを制限したほうがよいと思います。難しい部分は、ユーザーがキャレットをプロンプト領域に移動できないようにすることだと思いますが、キャレットが常に所属する場所 (入力部分) に送り返されるようにするコードを記述できる可能性があります。

いずれにせよ、もしあなたが本当にあなた自身のコントロールを実装したいのであれば (結局のところそれほど難しいことではありません)、Jacob Navia がどのように LCC コンパイラと環境を構築したかについての「技術文書」を読むことをお勧めします。実際、ドキュメントはもうオンラインではないようですが、彼の電子メール (jacob@jacob.remcomp.fr) から入手できると確信しています。

編集:前の例の方が気に入りました。上品に保ちます、LOL :)

于 2008-10-03T12:36:15.663 に答える
1

私は非常に似た要件を持っていて、davidgが提案したことを正確に行いました。エディット コントロールをサブクラス化し、キーの押下をフィルター処理しました。これは実際には MFC ではなく Qt を使用していましたが、原理はまったく同じです。

ホーム、左、バックスペースなどのキーをフィルタリングすることを忘れないでください。移動によってキャレットがプロンプトに移動するかどうか、およびキープレスが無視されるかどうかを確認しました。

注意すべきもう 1 つのことは、複数行のテキストの貼り付けです。最初の行だけを貼り付けるか、すべての行を貼り付けるかを選択し、最初の行の後のすべての行にプロンプ​​トを追加する必要があります。コントロールをサブクラス化すると、思いどおりに動作しない多くの動作が発生します。

于 2008-10-03T12:55:23.037 に答える