MFCでダイアログボックスを使ったプログラムを作成しようとしています。
EditBox で全角スペースが入力されたとき、□ のような表示をしたいのですが、
どのようにしてよいのか、お教えください。
表示したいイメージが文字コードで表現可能であれば、
入力された文字コードを監視して全角スペースなら内部的に変換して
設定するように処理する。
但し、全角スペースだけ色を変えるなんてのはこれでは出来ません。
色を変えるとか、文字コードでは表現できない場合は、
GDIで描画しなくてはならないのでオーナー描画と言いたいところですけど、
CEditにオーナー描画が見当たらないですね。
まあ、CEditから派生させてOnPaintをオーバーライドすれば何でもありですが、
その代わり何から何まで自分で描画する羽目になるので大変でしょうねぇ。
レス、有難うございます。
文字の監視をどのようにやるのかわかりません。
EditBox のプロパティ イベントで ON_EN_CHANGE
のところで監視をすればよいのでしょうか。
私が以前にやっていたものでは、ON_EN_UPDATEでやってました。
ソースを見直して見ましたが、何処に文字が追加されたかまで見ずに
まず、その時のカーソル位置をGetSelで保持しておいて
GetWindowTextで取り込み、文字を全て検査して必要なら変換し、
SetWindowTextで戻していたようです。
変換した結果、文字数が変わるようならカーソル位置の調整をして
SetSelしていました。
変換前と変換後で文字数が変わらなければ、ここの調整は要らないので
GetWindowTextとSetWindowTextだけでいけるかもしれないですね。
PATIO さん
ON_EN_UPDATEとGetWindowTextで取り込み、
文字を全て検査して該当文字を変換し、SetWindowTextで戻すことで
思っていたとおりのことが出来ました。
有難うございました。