-------------開発環境--------------
WinXP sp2 VisualStudio 2005 MFC SDI
-----------------------------------
お世話になります。現在上記の環境でTCP/IPパケットを表示するプログラムを
作成しています。
ちなみに編集、削除も可能にするためにCEditViewクラスを使用しています。
TCP/IPパケットをある法則で、色分けしたいのですが、色分けする前に色の変更が
出来ません。(初期の黒しか表示させない)
int nLen = GetWindowTextLength();
GetEditCtrl().SetSel(nLen nLen);
GetEditCtrl().ReplaceSel(TEST);
現在このように出力しているのですが、この出力が呼ばれる前、例えばコンストラクタや
OnInitialUpdate関数の中で、ブラシを作成すれば、上手くいくのでしょうか?
またサイトなどを拝見するとOnCtlColorやCtlColorを使っているのですが、
この関数を記述してブレークポイントを作成してデバックしても描画の時に
呼ばれていませんでした。
ご教示宜しくお願いいたします。
只のエディットコントロールだった筈なので、背景色と文字色が全ての範囲で共
通の物として設定出来る程度になると思います。
オーナードローを使う、CRichEditViewにする、ビューを自前で作り使う、等が考
えられます。
麩さん ご回答ありがとうございます。
お恥ずかしいのですが、あまりMFCの知識がないもので、アドバイスでいただいた、
>オーナードローを使う、CRichEditViewにする、ビューを自前で作り使う
上記のほうほうは現在のC***Viewをすべて最初から作り直さないといけないんですか?そ
れとも追記するような形になるのでしょうか?
はじめに質問させていただいた
>>OnInitialUpdate関数の中で、ブラシを作成すれば、上手くいくのでしょうか?
この部分ですけど、見当違いですかね・・。
もう少し詳しくご教示していただけないでしょうか?宜しくお願いいたします。
# Editのままでは、色の変更はできても色分けはできないのは既にある通り。
> 上記のほうほうは現在のC***Viewをすべて最初から作り直さないといけないんですか?
> それとも追記するような形になるのでしょうか?
> オーナードローを使う
CEditViewの枠組み自体そのまま使えるが、今までCEditViewがやってくれていてた、
文字を書く部分なども全部自分でコードを書く必要がある。
(出来合いの処理でなくオーナ(持ち主=CFWPSPさん)がドロー(描画)するからオーナドローなので
「色分け機能」なわけではない。「そういう表現をするために頑張ることができる」機能にすぎな
い。
書き直しではないが(凝れば凝るほど)結構な追記になって、自作と大差ない(余計面倒な?)可能性も
…。
> CRichEditViewにする
比較的容易に色分けができるようになる。(そういう機能がある)
CEditViewは画面がいわゆるメモ帳notepadですが、CRichEditViewにするとwordpadになります。
EditとRichEditは似てますので流用が聞く部分もありますが、基本的には作り直しが発生します。
とりあえず、「単純な文字単位での文字/背景の色分け」くらいなら、これで作るのが
比較的お手軽ではないでしょうか。
> ビューを自前で作り使う
一番自由度が高いです。RichEditでも満たせないような凝った色分けもできます。
# Editがnotepad、RichEditがwordpadなら、これはsakuraとか秀丸とかの高機能エディタのよう
なもの。
「CEditView互換」にでもしない限り、作り直しです。
Banさん ご回答ありがとうございます。
アドバイスを拝見させていただくと今回はそんな複雑な色分けではないので、
CRichEditViewを使おうと思いました。
>EditとRichEditは似てますので流用が聞く部分もありますが、基本的には作り直しが発
生 >します。
この部分は関してどの程度まで、今までの記述の流用が出来るかわかりませんが、
調べた所、フォントサイズやフォント色など簡単に変更出来そうなので、
Banさん麩さんのアドバイスの通りやってみたいと思います。
ありがとうございました。