エディットコントロール、右端で折り返したりしなかったり [プログラミング]
Windowsに標準で付いてくるメモ帳の様なテキストエディタを作る場合、ウィンドウにエディットコントロールをど~んと貼り付け、ファイルへの入出力を作ったら完成です。
VisualC++でMFCを使う場合は、もっと簡単で、AppWizardでViewの基本クラスをCView
からCEditView
に変更すればOKです。1文字たりともコードを打つ必要がありません。
さて、
メモ帳には、
テキストをウィンドウの右端で折り返すかどうかを設定することが出来ます。
メモ帳の文字を編集する部分は(上で説明したとおり)エディットコントロールで出来てまして、エディットコントロール(MFCではCEdit)では、右端で折り返すかどうかは、コントロールのスタイルで決まります。
スタイルにES_AUTOHSCROLL
が指定してあれば折り返さない、
指定されていなければ折り返す。
そこで、必要な時にスタイルを変更して再描画でもすれば、折り返しの切り替え機能が実現でき………。
出来ませんでした~。
どれだけ再描画しようが、テキストの内容をクリアして再設定しようが、折り返すかどうかの変更が出来ません。スタイルの値はちゃんと変わっているんですが。
それではメモ帳の“ウィンドウの右端でテキストを折り返すかどうかの切り替え機能”は、どうやって実現されているのでしょう。
実はこんな方法で実現可能です。
エディットコントロールの作成時に指定したES_AUTOHSCROLL
は、ちゃんと機能するので、
“右端で折り返すエディットコントロール”と“折り返さないエディットコントロール”の両方を作っておいて、どっちを表示するかを切り替える。
テキストの内容は、両方とも同じになるように同期を取る。
なんだ、そりゃ。
今日の二冊 | |
|
コメント 0