****viewの表示領域の色を変えるには???

[戻る]
おっとっと 2002/01/20(日) 01:23:22
どうも、はじめまして。
最近プログラムをはじめたばかりで、
このようなページがあるのは、非常にありがたいことです。
チップテクニックも、参考にさせていただいております。

早速ですが、VC++のプログラムで、OnDrawで書く画面の色を、白じゃなくて黒にしたいのです。
MFCの、SDIのものです。
タイマーで、定期的に書き換えるものなのですが、
pDC->FillSolidRect(myRect,RGB(0,0,0));
で色を変えると、画面がちらちらしてみずらくなってしまいます。
CMainFrameクラスのPreCreateWindowの後で何かするといいような気がするのですが、
どうすればいいのかわかりません。
CREATESTRUCT構造体のlpszClass辺りが怪しいと思い、
色々やってみたのですが、うまくいきません。
もしかすると、もっと簡単な方法があるかもしれないのですが、
結局わかりませんでした。
どうすればいいか、教えていただければ幸いです。
よろしくお願いいたします。

おっとっと 2002/01/22(火) 19:52:55
やっぱり、難しいみたいですねぇ。
それに、CMainFrameじゃなくて、***viewクラスですよね、出来るとすれば・・・。
しかし、記述も何も無いので、調べようが無いんですよねぇ。
難しいというか、無理ですか???

kazuma 2002/01/22(火) 20:19:57
ウィンドウクラスを登録するときにブラシを設定するという方法もあるのですが、
お手軽なのは、OnEraseBkgnd で黒く塗ってしまうか、
OnEraseBkgnd では何もせずに OnPaint で黒く塗る方法です。

上の方法でだいぶましになるはずですが、
黒地の上に描く内容も含めてちらつきを抑えたい場合は、
メモリDCに一旦描いてから一気に画面に転送するという方法をとります。

おっとっと 2002/01/26(土) 03:28:23
[[解決]]
kazumaさん、ありがとうございました。
そんなイベントの存在すら知りませんでした。
なんか、いろんなハンドラがあるので訳わかりませんよね。
これで、目が痛くなることが無くなりそうです。
ちらちらしていたのが嘘のように無くすることが出来ました。

「メモリDCに描く」というのは、
pDCとかのポインタじゃなく、実体を作ってやって、
それをBitBltでコピーするといったことでよろしいんですよね???
JAVAではよくやるみたいですが、
C++では見たことが無かったので、出来ないと思ってました。
いや、勉強になりました。
ありがとうございました。

古いスレッドには追加発言できません。