ボタンコントロール上にビットマップを表示するには?

解決


田中  2009-08-12 19:25:22  No: 70791  IP: [192.*.*.*]

winXP + VC++6.0(MFC)にてプログラムしています。
ダイアログに貼り付けたボタンコントロールに画像を表示させたく、以下の
ような手順で実行しました。
ビルドエラーは表示されないのですが、実行時に当該ボタン上に画像が表示
されません。
いろいろサイトを検索しサンプルコード等を自分用に読みかえて試しても見
たのですが、うまくいきません。原因にお気づきの点がありましたらアドバ
イスをお願いいたします。

//IDB_BITMAP1はビットマップリソースのIDです。
//m_Button1はクラスウィザードで当該ボタンコントロールに設定したコント
  ロールメンバ変数です。
//当該ボタンコントロールのプロパティで、「ビットマップ」にチェックを入
  れています。

以下のコードをダイアログのOnInitDialogハンドラ内に記述しています。

  CBitmap myBmp;
  myBmp.LoadBitmap(IDB_BITMAP1);
  HBITMAP hBmp = myBmp;
  m_Button1.SetBitmap(hBmp);

よろしくお願いいたします。

編集 削除
みい  2009-08-12 21:36:07  No: 70792  IP: [192.*.*.*]

おそらくOnInitDialogを抜けるとビットマップを読み込んだ変数が破棄されるのが原因ですね。

ヘッダーファイルに移してみてください。

編集 削除
田中  2009-08-12 22:35:53  No: 70793  IP: [192.*.*.*]

みいさん、Resをありがとうございます。

ご指摘のとおりにビットマップ用の変数をグローバル化した結果、拍子抜け
するほどアッサリと表示されました。

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

編集 削除