以下についてご指導をよろしくお願い致します。
・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);
}
>CBitmap m_Bitmap1
メンバ変数ではないのでしょうか?
(CTest::OnButton6で使えていることから、ヘッダファイルにも書いてあるっぽいが。)
>メンバ変数ではないのでしょうか?
不明確な記載で申し訳ありません。
メンバ変数です。(ClassWizardで追加しました)
F5キーで実行して
>Debug Assertion Failed!
で再試行を選んでとまったソースコードの行は何と書かれていますか?
ASSERT(XXXXXX);
のところ。
>ClassWizardで追加しました
CButtonに対してはダイアログのコントロール変数としてありますか?
>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です
でお願いします。
お手数をかけて申し訳ありません。
解決しました。
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;
}
}
ツイート | ![]() |