BitMap上で子ダイアログ移動時残った枠を消すためには


huruya  2004-07-01 03:09:33  No: 53882

いつも参考にさせていただいてます。

今までにこういう現象を解決できた方とか方法とか
何でもいいので教えていただければ幸いです。

環境は、Windows2000, VC++.NET2003です。

ダイアログベースで画面開発を行っているのですが、
親ダイアログから子ダイアログを呼び出した際
子ダイアログをドラッグすると、子ダイアログの枠の形が
ビットマップ上に残ってしまいます。

ダブルバッファリングなど調べてみたのですが、
ビットマップ自体が更新され再描画されているわけではないので
枠を消すことはできませんでした。

対応策として、他に試したことが
OnPaintでRedrawWidowをかけ続けるなどですが、効果が
ありませんでした。

掲示板に初めて投稿するので、不明瞭な点等あると思いますが、
そういった部分も含めご指摘ください。
よろしくお願いします。


SELNA  2004-07-01 19:53:36  No: 53883

ValidateRectを使用して更新領域から矩形領域を削除してみてはどうですか?


huruya  2004-07-01 20:40:13  No: 53884

昨日、いろいろ試してみてわかったことがあるのでご報告します。

現在、画面のプロパティ設定を256色にしている状態でビットマップが中間色を
使用しているためこの現象が起きることがわかりました。

画面設定がTrueColorの場合、ダイアログを移動した際に痕跡というか跡は
残りませんでした。また、画面設定が256色でビットマップが256色の場合も
同様にうまくいきました。

しかし、画面設定が256色は固定なので画面設定を変えることはできないのです。
最終手段としては、ビットマップを256色に対応するという
ことなのですができる限り中間色を使いたいという状況です。

以上が調べた結果になります。

>ValidateRectを使用して更新領域から矩形領域を削除してみてはどうですか?

SELNAさん、返信ありがとうございます。
試して、またご報告したいと思います。


huruya  2004-07-07 18:58:57  No: 53885

アドバイス等試してみたのですが、
結果ビットマップ上に跡が残り、中間色から256色に変更ということに
しました。

残念ながら解決できませんでしたので、
解決のチェックはつけずに投稿します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加