画像を消えないようにする – プログラミング – Home

画像を消えないようにする
 
通知
すべてクリア

[解決済] 画像を消えないようにする


nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

環境はWinXP VisualStudio.NET2003 VC++ MFC です。
また質問です。

ツリーをクリックするとピクチャコントロールに画像を表示します。
void CtreebView::OnTvnSelchangedTree1の中に下の画像表示の処理を書いてます。
m_stはピクチャコントロールのメンバ変数です。IDB1はリソースのビットマップです。

static CBitmap bmp;
bmp.LoadBitmap(IDB1);
HBITMAP hOldBitmap = m_st.SetBitmap(bmp);
m_st.SetBitmap(bmp);
bmp.DeleteObject();

画像の上に別のウインドウを重ねると重なった部分が消えています。
消えないようにする方法を教えてください。


引用未解決
トピックタグ
麩
 麩
(@麩)
ゲスト
結合: 17年前
投稿: 95
 

ピクチャコントロールにビットマップをセットする方法は「表示する」ではなく「再描
画の際に参照するよう設定する」動作になります。
よって
bmp.DeleteObject();
によって表示すべきビットマップが消えてしまい、再描画に失敗しているのではな
いかと思います。
また、
HBITMAP hOldBitmap = m_st.SetBitmap(bmp);
m_st.SetBitmap(bmp);
などと、二度セットする必要は無いかと思います。


返信引用
nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

bmp.DeleteObject();を無くすと、次にクリックして違う画像を読み込もうとしたときに
エラーが出ます。

2度セットは消してm_st.SetBitmap(bmp);だけにしました。


返信引用
nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

>ピクチャコントロールにビットマップをセットする方法は「表示する」ではなく「再描
画の際に参照するよう設定する」動作になります。

勘違いしてました。

修正して、次にクリックするまで別画面が重なっても消えなくなりました。

static CBitmap bmp;
bmp.DeleteObject();
bmp.LoadBitmap(IDB1);
m_st.SetBitmap(bmp);

ありがとうございました。


返信引用
nepiaa
 nepiaa
(@nepiaa)
ゲスト
結合: 17年前
投稿: 35
Topic starter  

解決です


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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