ネストされたダイアログで編集ボックスを設定しようとしていますが、実行時にプログラムがクラッシュします。2番目のダイアログに接続するために、次の変更を行いました。
1)タイプ2番目のクラス(CDialogから派生)の1番目のダイアログでメンバー変数を作成しました
2)私が持っている1sクラスのOnInitDialog()で:
CRect rcDlg;
m_dDlgData.Create(CDialogData::IDD, this); // Create the second dialog
GetWindowRect(rcDlg);
m_dDlgData.SetWindowPos(NULL, 0, 0, rcDlg.Width(), rcDlg.Height(), SWP_NOZORDER);
3)2番目のクラスにCEdit変数を作成しました。これは、1番目のクラスからアクセスするために公開されています。4)ボタンのイベントハンドラー(最初のダイアログ)で、指定された編集ボックス(2番目のダイアログ)を読み取り専用にし、別のイベントハンドラーで読み取り専用プロパティを無効にします。エラーが発生するコードは次のとおりです。
void CZad1SemovDlg::OnBedit()
{
m_dDlgData.EGNReadOnly(true);//no problems here
///some code///
if(m_dDlgData.DoModal() == IDOK)// <-- the error happens here
{
//more code
}
}
bool CDialogData::EGNReadOnly(bool check)
{
m_cEGN.SetReadOnly(check);//here nothing strange happens, the variable is
//initialised
return true;
}
奇妙なことに、コントロールとダイアログ変数は初期化されていますが、DoModal()メソッドを実行すると、プログラムがクラッシュします。エラーは次のとおりです。デバッグアサーションに失敗しました。492行目のdlgcore.cppお願いします、助けてください、私はしばらくこれに苦労していて、ネットを検索しましたが、理由を見つけることができませんでした。あまりにも多すぎると思ったので、コード全体を含めませんでしたが、見逃したと思われる関数を追加してほしい場合は、教えてください。スレッドに追加します。MSVC2008を使用しています