- 締切済み
EditViewクラス 文字色の変更とクリア
お世話になります。現在MFCでTCP/IPパケットを受信したものをCEdtiViewクラスのViewに表示するプログラムを作成しました。 そこで、わからない事が出てきたので、わかる方々にご教示していただきたく投稿いたしました。 わからない事は、Viewに表示される文字色が現在Black(default??)なのですが、その色を変えたいのですが、どのようにしたらいいのでしょうか? ちなみにViewへの表示はGetEditCtrl()という関数を使用していて、 CString Msg(_T("TEST")); int nLen = GetWindowTextLength(); GetEdtiCtrl().SetSel(nLen,nLen); GetEditCtrl().ReplaceSel(Msg); このような記述をしています。 このGetEditCtrlを使って文字色の変更は出来ないのでしょうか? あとタイトルにも記載したのですが、あるトリガーがあるとそのEditViewクラスの描画文字列をすべてクリアしたいと考えています。 トリガーは簡単にボタンが押されたときに~~~C***Viewの領域クリア このような時はどのようにしたらいいのでしょうか? 初心者ですが、宜しくお願いいたします。 ---------------------------開発環境-------------------------------- WinXP sp2 MFC SDI
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
CEditViewの派生クラスで色の変更をする場合は CtlColor(CDC* pDC, UINT nCtlColor)を使うことになります # Onが付かないほうです ... Viewクラスのプロパティから メッセージを選択し =WM_CTLCOLORの右側をクリックで追加できます この場合最低でも CBrushクラスの変数を用意して、関数からの戻り値にしないといけないでしょう Viewクラスの OnInitialUpdateメソッドの中などで ブラシを作成してください ドキュメントの内容を削除したいのであればViewクラスの DeleteContens()を呼び出せばいいような気がします ...
- aris-wiz
- ベストアンサー率38% (96/252)
デバイスコンテキストクラスの 背景色と文字色を変えることで実装できそうです。 あとはメッセージ云々の処理になりますが、 以下が参考になりそうです。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_EDITcolor.html
お礼
aris-wiz様 ご回答ありがとうございます。 さっそくリンク先のサイトを見て実行したのですが、EditViewクラスにおいてOnCtlcolorがオーバーライド出来ませんでした。 ちなみに先ほど記述し忘れたのですが、Visual Studio 2005 MFCを使用して います。 自分がやりたい事を簡単に書きますと、 1、C***Viewに描画される文字はすべて(青色)とする。アプリケーション を作動させてる最中に文字色は変更しない! 2、トリガーが与えられると、描画していた文字が消える。 大きく言うと以上2点が出来ればよいのですが、先ほどの参考リンクで、 マネした所うまくいきませんでした。 自分のやり方がいけないのでしょうか? アドバイス宜しくお願いいたします。
お礼
返答が遅れてしまいまして、本当に申し訳ありません。 >Viewクラスのプロパティから メッセージを選択し =WM_CTLCOLORの右側をクリックで追加できます この部分ですが、追加したところ、OnCtlColorが追加させましたけど、 それで宜しいのでしょうか? >この場合最低でも CBrushクラスの変数を用意して、関数からの戻り値にしないといけないでしょう これは、 CBrush 変数 としてCBrush変数を作成して、CtlColorの return CBrush変数 としてあげればよいのでしょうか? Viewクラスの中のOnInitialUpdateの中で、ブラシを作成しても上手く 行きませんでした。 >ドキュメントの内容を削除したいのであればViewクラスの DeleteContens()を呼び出せばいいような気がします MSDNなどで、DeleteContensを検索しても出てこなかったのですが、 どういう使い方をしたらいいのでしょうか? 返信遅くなってしまいましたが、宜しくお願いいたします。