簡體   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