教えて!gooにおける不適切な投稿への対応について

VC++6.0のダイアログベースでプログラミングを行っています。

IDC_BOTTOB6が押されたら、IDD_ABOUTBOXを表示するようにしたいのですが、
うまくいきません。

//
// DialogProc - ダイアログボックス プローシジャ
//
LRESULT CALLBACK DlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
switch (uMessage)
{
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDCANCEL:
TermApp(hDlg);
if (hDll != NULL)// DLLロード済み?
{
FreeLibrary(hDll);// DLLのハンドラ開放
}
DestroyWindow(hDlg);
break;
case IDC_BUTTON6: {
CDialog aboutDlg(IDD_ABOUTBOX);
INT_PTR nRet = -1;
nRet = aboutDlg.DoModal();
// Handle the return value from DoModal
switch ( nRet )
{
case -1: {
MessageBox(NULL,"Dialog box could not be created!", NULL, MB_OK);
}
break;
case IDABORT:
// Do something
break;
case IDOK:{
// Do something
}
break;
default:{
// Do something
}
break;
                };
               }

上記のようにプログラムしていますが、コンパイルは通るのですが、実行するとエラーで落ちます。

Debug Assertion Failed

Program: C:/.....test.exe
File: afxwin1.inl
Line: 22

何か原因が分かりましたら、ご教授頂けると幸いです。
以上、宜しくお願いします。

gooドクター

A 回答 (4件)

で……


>File: afxwin1.inl
>Line: 22
にはなんと書かれています?

LOWORD(wParam)
でボタンのコントロールIDしか見ていないようですが…HIWORD(wParam)はチェックしていないのでしょうか?
BN_PAINTやBN_SETFOCUS、BN_KILLFOCUSなどの「ボタンを押した」以外でも
LOWORD(wParam) == IDC_BUTTON6な状態もありえますけど、そのヘンは大丈夫なんですか?
# BN_PAINTのたびにダイアログ開いたりしたら…無限ループにハマりませんかねぇ?

ダイアログを開いた時(CreateDialog()等)にもBN_PAINTが飛んでくるかも知れませんけど…
そうなると、メインダイアログの初期化中…ということになったりしませんか?
    • good
    • 0
この回答へのお礼

回答、有難うございます。
VC++6.0初心者の為、回答の内容がよく分かりません。
勉強します。
実は、このプログラムは、某社のサンプルプログラムを
見よう見真似で改造したもので、全体の構造がよく分かっていません。
また、かなり特殊なプログラムらしく、内容がよく分からないのが現状です。
もし、上記の回答に関し、具体的なソースコードのあるURL等ご存知でしたら、
教えて頂けると助かります。
以上、宜しくお願いします。

お礼日時:2012/04/20 09:25

猫でもの書籍にはWin32APIやC++の入門はあってもMFC入門は無いはずですが?

    • good
    • 0

とりあえず、一番簡単そうな猫でもわかるシリーズです。


「MFC編INDEX」
http://www.kumei.ne.jp/c_lang/indexmfc.html

あと役立ちそうな書籍。中古で買うしか無いです。
「Amazon.co.jp: Visual C++6.0プログラミング 基礎編―MFCを活用したWindowsアプリケーション開発: 田中 正造: 本」
http://www.amazon.co.jp/dp/479730779X/
「Amazon.co.jp: 新Visual C++6.0入門 ビギナー編 (Visual C++6.0実用マスターシリーズ): 林 晴比古: 本」
http://www.amazon.co.jp/dp/4797307609/

この本は現役ですが、少し難しいかも。
「Amazon.co.jp: 標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング (Programmer’s SELECTION): ハーバート シルト, 田中 正造, Herbert Schildt, コスモワークス: 本」
http://www.amazon.co.jp/dp/4881357042/
    • good
    • 0
この回答へのお礼

ありがとうございます。
とりあえず、「猫でも」を買いました。
勉強してみます。
今後とも宜しくお願いします。

お礼日時:2012/04/26 11:04

なぜ素直にMFCのメッセージ処理を使わないのでしょうか?

    • good
    • 0
この回答へのお礼

回答、有難うございます。
VC++6.0初心者なので、メッセージ処理がよく分かりません。
勉強します。
もし、サンプルコード等のあるURLを教えて頂けると助かります。
以上、宜しくお願いします。

お礼日時:2012/04/20 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング