2010-11-30 20 views
2

ES_AUTOHSCROLL Setで望ましくない反射があります。ES_AutoHScrollのない「無制限」CEditテキスト

私がしようとしているのは、そのテキストでサイズ変更された編集を作成することです。しかし、ユーザーが編集の最後を過ぎて入力するたびに問題が発生しました。

ES_AUTOHSCROLLを指定しないと、ユーザーは編集の現在のサイズを入力することができないため、入力が無視されるため、編集が新しい文字に適合しません。

ES_AUTOHSCROLLを使用すると、ユーザーが編集の現在のサイズを過ぎて入力すると、ウィンドウサイズを増やす前にスクロールして最初の文字を隠すことができます新しいキャラクターを保持する。

私の解決策は、次の文字を入力する余地があるため、自分の編集した最大幅の文字を、そのテキストを保持しているテキストよりも長くすることでした。しかし、それはちょっとした感じです。

もしES_AUTOHSCROLLを使わずに編集ウィンドウの幅より広いテキストを許可する方法があれば、私は設定されます。 UINT_MAXへのテキストの長さを設定し、メンバ関数void CEdit::LimitText(int nChars = 0)ありCEditののドキュメントで:

答えて

0

私が望む効果をシミュレートする方法が見つかりました。

私はES_AUTOHSCROLLを使用します。

私はOnUpdateに応答し、コントロールに含まれるテキストに合わせてサイズを変更します。 OnUpdateの内部にスクロールする問題(それが大きくなることを知る前にテキストを挿入するためにスクロールする)を処理するために、私は0,0を選択し、前の選択を返します。こうすると、最初にスクロールしてからサイズを更新します。

このようにして、コントロールはスクロールせずに無限に拡大するように見えます。

0

は、私はあなたにもES_MULTILINE

EDITを使用したいと思います。私はまだあなたもES_AUTOHSCROLLを使用する必要があると思う(そうでなければ、コントロールの幅を超えてタイプしようとするとEN_MAXTEXT通知を受け取る)。

+0

複数の行は必要ありません。 オートスクロールを使わずに "永遠に"伸びる1行が必要です。私は、オートスクロールを使わずにエディットボックスの幅を超えて入力できるようにしたい。 –

関連する問題