[英]Controls handling in a CTabCtrl MFC
我在我的Main Dialog :: OnInit()方法上有一个MFC应用程序,该应用程序具有从CTabCtrl继承的类。
tabCtrl.InsertItem(0, _T("Tab 1"));
tabCtrl.InsertItem(1, _T("Tab 2"));
tabCtrl.InitDialogs();
tabCtrl.ActivateTabDialogs();
tabCtrl.ShowWindow(SW_SHOW);
tabCtrl是继承自CTabCtrl的类中的变量,方法InitDialogs是:
m_Dialog[0]->Create(m_DialogID[0], this);
m_Dialog[1]->Create(m_DialogID[1], this);
m_Dialog[0]->ShowWindow(SW_SHOW);
m_Dialog *包含我从资源类中绘制的两个对话框类。
运行程序时,我在绘制时都看到了两个选项卡,但是当我执行类似的操作时
UpdateData(TRUE);
valueTest = "tEST";
UpdateData(FALSE);
我收到断言失败错误。 我的DoDataExchange正在被调用,它看起来像:
void ConfigDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, valueTest);
}
我已经为此苦苦挣扎了好几天,但我只能找到带有虚拟选项卡的示例,这些选项卡中没有任何控件。 我缺少任何步骤吗?
更新:断言错误显示此
Microsoft Visual C ++运行时库---------------------------调试断言失败! 程序:C:\\ Windows \\ SYSTEM32 \\ mfc140d.dll文件:f:\\ dd \\ vctools \\ vc7libs \\ ship \\ atlmfc \\ src \\ mfc \\ wincore.cpp行:4355有关程序如何导致断言失败的信息,请参见断言上的Visual C ++文档
它无法UpdateData(TRUE)语句
我假定它是一个编辑控件,因为它具有IDC_EDIT1的ID。 之所以给出ASSERT,是因为您没有ID为IDC_EDIT1的窗口作为ConfigDialog的子窗口。 它是选项卡控件之一的子级吗? DDX_ *宏仅适用于对话框类的子窗口。
如果您的子窗口带有某些选项卡,请尝试以下操作:
tabCtrl.SetDlgItemText(IDC_EDIT1, valueTest);
要检索它,
tabCtrl.GetDlgItemTText(IDC_EDIT1, valueTest);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.