いつもお世話になっています。
複数のリッチエディターコントロール(子ウィンドウ)を作成し、それぞれ、背景色と、文字入
力可否を設定しようとしています。
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++ 環境です。
よろしくお願いいたします。
SetReadOnly()でどうでしょか?
Kerryさん、早速ご返答有難うございます。
SetReadOnly()
で書き込みができなくなりました!!
文字入力アイコン ” | ”が出なくなると良いのですが。
教えていただけますでしょうか。よろしくお願いします。
フォーカスを違うコントロールに当ててみては如何でしょうか?
CWndにHideCaretってなかったでしたっけ
keichanさん、lngさんご返答有難うございます。
カレットの非表示から試してみましたが、カレットが消えないで、点滅しています。
if(inmode == 1){
m_rich[id].HideCaret();
m_rich[id].SetReadOnly();
}
よろしくお願いします。
HideCaret後、リッチエディットにテキストを送るとフォーカスが復活するようですが。
事前に書きたいものを入れてからHideCaretしないといけないようですね
でもkeichanさんの仰るようにリッチエディットではないコントロールに
フォーカスを移しておくのが簡単ですかね
たとえばWindowsのファイルやフォルダのプロパティがそんな感じですよ
(場所とかサイズの項目は読み取り専用のCEditになってるのでフォーカスは来ます)