【发布时间】:2012-04-07 14:42:27
【问题描述】:
我正在尝试在嵌套对话框中设置编辑框,但程序在运行时崩溃。我进行了以下更改以与第二个对话框建立连接:
1) 在第一个对话框中创建第二类类型的成员变量(派生自 CDialog)
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) 在第二类中创建了一个 CEdit 变量,该变量是公共的,以便从第一类访问它。 4)在按钮的事件处理程序中(在第一个对话框中),我想让给定的编辑框(在第二个对话框中)只读,并在另一个事件处理程序中禁用只读属性。这是发生错误的代码:
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() 方法时,程序崩溃了。错误是:调试断言失败! dlgcore.cpp 在第 492 行 请帮助,我现在正在为此苦苦挣扎,搜索了网络,但找不到原因。我没有包含整个代码,因为我认为它会太多,但是如果您希望我添加您认为我错过的功能,请告诉我,我会将其添加到线程中。我正在使用 MSVC2008
【问题讨论】:
标签: visual-c++ mfc dialog controls nested