ボタンにビットマップを表示するには?

解決


メグロ  2007-08-21 02:22:13  No: 66043

以下についてご指導をよろしくお願い致します。

・Windows XP  VC++6  MFC  ダイアログベース

・ダイアログに6個のボタンを配置、1〜5は固定で6のボタンのみ、
  ボタン押下毎にIDB_BITMAP6⇔IDB_BITMAP7を交互に表示したいのですが、
  2回目のボタン押下でエラーダイアログが表示されます。

・エラー内容
  Debug Assertion Failed!

・手法
BOOL CTest::OnInitDialog()
{
     : // 省略
    CBitmap m_Bitmap1.LoadBitmap(IDB_BITMAP1);
     : // 省略
    CBitmap m_Bitmap7.LoadBitmap(IDB_BITMAP7);

    CButton m_Button1.SetBitmap(m_Bitmap1);
     : // 省略
    CButton m_Button6.SetBitmap(m_Bitmap6);
}

void CTest::OnButton6()
{
    //ここで交互に
    //m_Button6.SetBitmap(m_Bitmap6);  または  m_Button6.SetBitmap(m_Bitmap7);
}


Blue  2007-08-21 02:34:22  No: 66044

>CBitmap m_Bitmap1
メンバ変数ではないのでしょうか?
(CTest::OnButton6で使えていることから、ヘッダファイルにも書いてあるっぽいが。)


メグロ  2007-08-21 02:48:49  No: 66045

>メンバ変数ではないのでしょうか?

不明確な記載で申し訳ありません。
メンバ変数です。(ClassWizardで追加しました)


Blue  2007-08-21 02:56:49  No: 66046

F5キーで実行して
>Debug Assertion Failed!
で再試行を選んでとまったソースコードの行は何と書かれていますか?

ASSERT(XXXXXX);

のところ。

>ClassWizardで追加しました
CButtonに対してはダイアログのコントロール変数としてありますか?


メグロ  2007-08-21 03:48:57  No: 66047

>F5キーで実行して
>Debug Assertion Failed!
>で再試行を選んでとまったソースコードの行は何と書かれていますか?
ASSERT(m_hObject == NULL);  // only attach once, detach on destroy

>CButtonに対してはダイアログのコントロール変数としてありますか?
表示メニュー→ClassWizard→クラス→コントロールID→メンバ変数追加→コントロールはCButtonで追加しました。

申し訳ありません。
CBitmapは、ClassViewタブのダイアログクラス右クリックでメンバ変数の追加をしました。

記載として
>CBitmap m_Bitmap7.LoadBitmap(IDB_BITMAP7);
>CButton m_Button1.SetBitmap(m_Bitmap1);
は、
m_Bitmap7.LoadBitmap(IDB_BITMAP7);  // CBitmapです
m_Button1.SetBitmap(m_Bitmap1);     // CButtonです
でお願いします。
お手数をかけて申し訳ありません。


メグロ  2007-08-21 04:57:09  No: 66048

解決しました。
Blueさん、申し訳ありませんでした。m(__)m
不具合の箇所を省略していました。

void CTest::OnButton6()
{
  if (g_blFlag == TRUE) {
    // m_Bitmap6.LoadBitmap(IDB_BITMAP6);  ←コメントにしました
    m_Button6.SetBitmap(m_Bitmap6);
    g_blFlag = FALSE;
  }
  else {
    // m_Bitmap7.LoadBitmap(IDB_BITMAP7);  ←コメントにしました
    m_Button6.SetBitmap(m_Bitmap7);
    g_blFlag = TRUE;
  }
}


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

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






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