Управляет обработкой в ​​CTabCtrl MFC

У меня есть приложение MFC, у которого есть класс, который наследуется от CTabCtrl, в моем методе Main Dialog :: OnInit (), который я делаю.

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) предложение

0

Решение

Я предполагаю, что это элемент управления для редактирования, потому что он имеет идентификатор IDC_EDIT1. ASSERT дается, потому что у вас нет окна с идентификатором IDC_EDIT1 в качестве дочернего окна ConfigDialog. Это дочерний элемент одного из элементов управления вкладками? Макросы DDX_ * будут работать только для дочерних окон вашего диалогового класса.

Если у вас есть дочернее окно какой-либо вкладки, попробуйте что-то вроде:

tabCtrl.SetDlgItemText(IDC_EDIT1, valueTest);

Чтобы получить его,

tabCtrl.GetDlgItemTText(IDC_EDIT1, valueTest);
0

Другие решения

Других решений пока нет …