異なるダイアログ画面に画像を表示する – プログラミング – Home

異なるダイアログ画面に画像を表示する
 
通知
すべてクリア

[解決済] 異なるダイアログ画面に画像を表示する


月光
 月光
(@月光)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

VC++の初心者です。

現在、VC++.NET2002で
Sample1の画面上のボタンを押すと
Sample2の画面上に画像を表示する内容の
アプリケーションを作成しております。
2つのクラス間の引数の受け渡しのために
以下の様なプログラムコードを作成しました。

ビルド実行は通るのですが、
デバッグしSample1の画面上のボタンを
押しますと「Debug Assertion Failed!」と
表示されます。
自分なりに調べたのですが、原因がわかりません。
宜しくお願いします。

//クラスSample1のプログラムコード
void Sample1::OnBnClickedButton1()
{
go(botton1);
}

void Sample1::go(int number)
{    
//引数の受け渡し
Sample2 S2;
S2.display(number);
EndDialog(0);
hime.DoModal();
}

//クラスSample2のプログラムコード

void wing::OnPaint()
{
 if (IsIconic())
   {
省略
}
 else
   {
   CDialog::OnPaint();
 if(dispflg) {
   CDC* pDC=this->GetDC();
   CDC myDC;
   CBitmap myBMP;
   myBMP.LoadBitmap(IDB_BITMAP); 
   myDC.CreateCompatibleDC(pDC);
   CBitmap* oldBMP=myDC.SelectObject(&myBMP);
pDC->BitBlt(5,25,256,256,&myDC,0,0,SRCCOPY);
   myDC.SelectObject(oldBMP);
    }
  }
}

void Sample2::display(int number)
{
getnumber=number;

    //画像の表示
if(getnumber==1){
dispflg=1;
Invalidate();
}
else{
EndDialog(0);
}
}

button1はマクロ定義で
#define button1 1
と定義してあります。

画像はリソースとして設定して
おいた画像を表示します。


引用未解決
トピックタグ
月光
 月光
(@月光)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

すみません、プログラムコードに間違いが
ありました。

void wing::OnPaint()ではなく

void Sample2::OnPaint()が本当です。

以上


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> S2.display(number);

この時点でS2(ダイアログ)はまだ画面に現れてませんよね。
つまりダイアログはこの世に存在しません。
存在しないダイアログに対してInvalidate()したので実行時エラー。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

せっかく、「Debug Assertion Failed!」と教えてくれているのに
生かせていないのが一番問題かも。
デバッガでやっているならその部分で止まっていると思うのだけど。
そのASSERT文の内容を読んでなんでそこでASSERTが出るのか調べないと。

呼び出し履歴とかデバッガ上に出ているでしょうから何処から呼ばれた時に
出ているのかもわかるでしょうし、

デバッガの使い方も含めて参考書なりで勉強した方が良いとおもいますよ。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

デバック→開始で止まりませんか?
.NET2003ですが.....


返信引用
指摘
 指摘
(@指摘)
ゲスト
結合: 18年前
投稿: 1
 

>デバック
デバッグ(Debug)


返信引用
月光
 月光
(@月光)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

ありがとうございます。
皆さんの、アドバイスを今後に
活かしていきます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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