- PR -

VC++.net の Form 上の Dialog 実装

1
投稿者投稿内容
パットン
会議室デビュー日: 2004/08/15
投稿数: 11
投稿日時: 2004-10-09 17:17
WindowsXP professional で VC++.NET を使っています。
Windows Form アプリケーションのテンプレートから作成し、
Form 上にボタンを配置して Dialog を表示させるため、
以下のコードを組みました。

public __gc class Form1 : public System::Windows::Forms::Form
{
・・・・
private: System::Void FunctionButton_Click(System:bject * sender, System::EventArgs * e)
{
CFuncDlg dlgFunc; <--- "CFuncDlg" は MFC の CDialog の派生クラス
dlgFunc.Create(IDD_DIALOG_FUNC, NULL); <--- (1)
dlgFunc.ShowWindow(SW_SHOW);
}
・・・
}

実行(1) の部分で、"Debug Assertion Failed!" のエラーが表示されてとまってしまいます。エラーメッセージの中身は、実行ファイルと、以下のファイル名が表示されています。
"f:\vc70\builds\3077\vc\MFCATL\ship\atlmfc\include\afxwin1.inl"

ステップ実行で、(1) の中に入ろうとすると、Surce ファイル名を指定するダイアログが表示されるため、どうしていいのか分かりません。

また、CDialog から派生させて作った "CFuncDlg" クラスでは、OnInitDialog() メソッドはありません。これは、以下の手順で、OnInitDialog() を実装しようとしましたが、できなかったからです。

1.ダイアログを "リソースビュー" を右クリックしてダイアログを作成
2.そのダイアログをクリックしてプロパティウィンドウを表示
3.プロパティウィンドウの "メッセージ" ツールボックスをクリック
4.WM_INITDIALOG メッセージを探して OnInitDialog() を実装

上記手順 4. で WM_INITDIALOG がなかったからです。

上記コード(1)の部分で失敗するのは、 OnInitDialog() がないからではと思っていますが、なにかよいアドバイスは御座いませんでしょうか?

よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)