リッチエディタコントロールの背景色 – プログラミング – Home

リッチエディタコントロールの背景色
 
通知
すべてクリア

リッチエディタコントロールの背景色


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

リッチエディタコントロールの背景色を指定し、作成しています。

そのリッチエディタコントロール上でクリックすると、入力不可 EnableWindow(FALSE)な
るようにしています。
その時、背景色が、灰色に変わってしまいます。
元の背景色のまま、入力不可にできないでしょうか?

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


引用解決済
トピックタグ
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

リソースの[Read Only]をTrueにするだけでは駄目?

実行時なら、EM_SETREADONLYメッセージを送ってみる。
MFCなら CRichEditCtrl::SetReadOnly() で良い。


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

bunさん、早速ご返事ありがとうございます。

次のようにしているのですが、カレットが消えないのです。
それでやむ終えず、EnableWindow(FALSE)を使用することにしました。

m_rich.HideCaret();
m_rich.SetReadOnly(TRUE);

どうして、カレットが消えないのでしょうか?

よろしくお願いします。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

> どうして、カレットが消えないのでしょうか?
ソースコードが無いので詳しいことは分かりません。
まぁ、きっとそういう風に作られているからでしょう。

カレットの点滅がどうしても気になる場合、
簡単な方法が見つからないなら、同じようなものを自分でゴリゴリ書くしかな
いでしょう。
ただ、個人的には以下のように思います。

簡単な方法が無いと言うことは、それを無理に行うことはWindows標準からかけ
離れることです。
わざわざ標準からかけ離れて良い結果を産むことはまれであり、(工数等も考慮
に入れると)よほどの理由がない限り行うべきではありません。


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

HideCaretは
「対象のウィンドウを『キャレット非表示モード(*1)』に切り替える」
というものではなく、「今でてるのを消す」だけ。

フォーカスをもつ、キャレットの位置が変わるといった
「キャレットの状態が変更して再描画」があれば再表示される

*1:このモードがあるかは聞いたことがない


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

リッチエディットではなく普通のエディットコントロールですが、フォーカスを取得時
にCreateCaret+HideCaretすることにより、消去できました(フォーカスを失ったと
きにDestroyCaretが必要)。
ヘルプを見るとCreateCaretした後はShowCaretを呼び出さないと非表示の状態にとどま
るって書いてあるけど、ShowCaret無しで表示されました。そこでHideCaretを実行した
ところ表示されないようになりました。
まあ、対症療法なので、正しくはどうすべきなのかわかりません。

また、CreateCaretでサイズを0にしたらどうなるかと思ったけど、点状のキャレットが
表示されました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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