****viewの表示領域の色を変えるには??? – プログラミング – Home

****viewの表示領域の色を変える...
 
通知
すべてクリア

[解決済] ****viewの表示領域の色を変えるには???


おっとっと
 おっとっと
(@おっとっと)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

どうも、はじめまして。
最近プログラムをはじめたばかりで、
このようなページがあるのは、非常にありがたいことです。
チップテクニックも、参考にさせていただいております。

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


引用未解決
トピックタグ
おっとっと
 おっとっと
(@おっとっと)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

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


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

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

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


返信引用
おっとっと
 おっとっと
(@おっとっと)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

kazumaさん、ありがとうございました。
そんなイベントの存在すら知りませんでした。
なんか、いろんなハンドラがあるので訳わかりませんよね。
これで、目が痛くなることが無くなりそうです。
ちらちらしていたのが嘘のように無くすることが出来ました。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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