スペース入力の表示 – プログラミング – Home

通知
すべてクリア

[解決済] スペース入力の表示


bin
 bin
(@bin)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

MFCでダイアログボックスを使ったプログラムを作成しようとしています。
EditBox で全角スペースが入力されたとき、□ のような表示をしたいのですが、
どのようにしてよいのか、お教えください。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

表示したいイメージが文字コードで表現可能であれば、
入力された文字コードを監視して全角スペースなら内部的に変換して
設定するように処理する。
但し、全角スペースだけ色を変えるなんてのはこれでは出来ません。

色を変えるとか、文字コードでは表現できない場合は、
GDIで描画しなくてはならないのでオーナー描画と言いたいところですけど、
CEditにオーナー描画が見当たらないですね。
まあ、CEditから派生させてOnPaintをオーバーライドすれば何でもありですが、
その代わり何から何まで自分で描画する羽目になるので大変でしょうねぇ。


返信引用
bin
 bin
(@bin)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

レス、有難うございます。
文字の監視をどのようにやるのかわかりません。
EditBox のプロパティ イベントで ON_EN_CHANGE
のところで監視をすればよいのでしょうか。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

私が以前にやっていたものでは、ON_EN_UPDATEでやってました。
ソースを見直して見ましたが、何処に文字が追加されたかまで見ずに
まず、その時のカーソル位置をGetSelで保持しておいて
GetWindowTextで取り込み、文字を全て検査して必要なら変換し、
SetWindowTextで戻していたようです。
変換した結果、文字数が変わるようならカーソル位置の調整をして
SetSelしていました。
変換前と変換後で文字数が変わらなければ、ここの調整は要らないので
GetWindowTextとSetWindowTextだけでいけるかもしれないですね。


返信引用
bin
 bin
(@bin)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

PATIO さん 
ON_EN_UPDATEとGetWindowTextで取り込み、
文字を全て検査して該当文字を変換し、SetWindowTextで戻すことで
思っていたとおりのことが出来ました。
有難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました