リッチエディタを文字入力不可にする方法 – プログラミング – Home

リッチエディタを文字入力不可にする方法
 
通知
すべてクリア

リッチエディタを文字入力不可にする方法


haruko
 haruko
(@haruko)
ゲスト
結合: 19年前
投稿: 38
Topic starter  

いつもお世話になっています。
複数のリッチエディターコントロール(子ウィンドウ)を作成し、それぞれ、背景色と、文字入
力可否を設定しようとしています。

 CrichEditCtrl m_rich[100];
.......
.......

int inmode; // 文字入力の可否 1ならば 不可
COLORREF bcol; // 背景色
     int id  // リッチエディターコントロールのインデクス

m_rich[id].SetBackgroundColor(FALSE, bcol);

if(inmode == 1){
m_rich[id].EnableWindow(FALSE);
}

このようにすると、背景色がデフォルトの灰色になってしまいます。設定した背景色のままで、文
字入力ができなくするにはどうすればよいのでしょうか。

また、文字入力不可のコントールは、マウスクリックは認識しなければなりません。

WIN 2000 、 MFC、 VC6++ 環境です。

よろしくお願いいたします。


引用解決済
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

SetReadOnly()でどうでしょか?


返信引用
haruko
 haruko
(@haruko)
ゲスト
結合: 19年前
投稿: 38
Topic starter  

Kerryさん、早速ご返答有難うございます。

SetReadOnly()

で書き込みができなくなりました!!

文字入力アイコン ” | ”が出なくなると良いのですが。
教えていただけますでしょうか。よろしくお願いします。


返信引用
keichan
 keichan
(@keichan)
ゲスト
結合: 18年前
投稿: 28
 

フォーカスを違うコントロールに当ててみては如何でしょうか?


返信引用
lng
 lng
(@lng)
ゲスト
結合: 18年前
投稿: 9
 

CWndにHideCaretってなかったでしたっけ


返信引用
haruko
 haruko
(@haruko)
ゲスト
結合: 19年前
投稿: 38
Topic starter  

keichanさん、lngさんご返答有難うございます。

カレットの非表示から試してみましたが、カレットが消えないで、点滅しています。

if(inmode == 1){
m_rich[id].HideCaret();
m_rich[id].SetReadOnly();
}

よろしくお願いします。


返信引用
lng
 lng
(@lng)
ゲスト
結合: 18年前
投稿: 9
 

HideCaret後、リッチエディットにテキストを送るとフォーカスが復活するようですが。
事前に書きたいものを入れてからHideCaretしないといけないようですね

でもkeichanさんの仰るようにリッチエディットではないコントロールに
フォーカスを移しておくのが簡単ですかね
たとえばWindowsのファイルやフォルダのプロパティがそんな感じですよ
(場所とかサイズの項目は読み取り専用のCEditになってるのでフォーカスは来ます)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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