繁体   English   中英

控制CTabCtrl MFC中的处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM