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