質問: 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 何か原因が分かりましたら、ご教授頂けると幸いです。 以上、宜しくお願いします。
回答: で...... >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が飛んでくるかも知れませんけど... そうなると、メインダイアログの初期化中...ということになったりしませんか?