CTabCtrl, включение и отключение вкладок

Использование Visual C ++ MFC.

У меня есть диалоговая страница, которая содержит объект управления вкладкой. Я создал свой собственный класс управления вкладками, полученный из CTabCtrlгде я создал все свои вкладки, содержащиеся в массиве, вот так:

tabArray[0] = new TabPage;
tabArray[1] = new TabPage;

tabArray[0]->Create(DIALOG, this);
tabArray[1]->Create(DIALOG, this);

На моей начальной диалоговой странице у меня есть несколько флажков. В зависимости от состояния этих флажков я добавляю / удаляю вкладки (но не базовые классы TabPage!).

Это сделано так. Я отслеживаю, какие вкладки включены / отключены в m_fTabEnabled. Состояние вкладки переключается с помощью флажка. Это используется, чтобы определить, какую вкладку нужно вставить.

m_fTabEnabled[iTab] = !m_fTabEnabled[iTab];

DeleteAllItems();

for(int i = 0; i < NUMOFTABS; ++i)
{
if(m_fTabEnabled[i]) InsertItem(i, m_sTabNames[i]);
}

При использовании этого метода у меня возникает проблема, заключающаяся в том, что если у меня включены три вкладки и я удаляю вторую вкладку, то на третьей вкладке отображается диалоговое окно с данными из второй вкладки. Например:

tab 1, label 1, contains: 1
tab 2, label 2, contains: 2
tab 3, label 3, contains: 3

remove tab 2, tab 3 is shifted to tab 2

tab 1, label 1, contains: 1
tab 2, label 3, contains: 2
tab 3 hidden.

Это вызывает проблему при извлечении данных из вкладок, потому что то, что я заполнил на вкладке 3, теряется для данных, которые раньше были на вкладке 2.

Кто-нибудь есть какие-либо предложения о том, как справиться с этим?

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]