Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > диалоги в CTabCtrl и главная форма


Автор: semerson 12.2.2007, 18:28
На главной форме расположен CTabCtrl и ряд чекбоксов. На одной из закладок tabctrl'а лежит CListCtrl. При дабл-клике на одном из полей листконтрола нужно получить состояние чекбоксов которые относятся к главной форме. Как это сделать?

Автор: vinter 12.2.2007, 18:55
заведи bool массив, в котором будут находиться состояния checkbox, и при необходимости используй его 

Автор: semerson 12.2.2007, 19:13
глобальный массив через extern?

Автор: vinter 12.2.2007, 21:09
а это уж полет твоей фантазииsmile можешь статический элемент класса сделать(предпочтительнее чем глобальное обьявление), можешь еще ф-ию- член возвращающую указатель на массив.. вообщем тут сам думай smile 

Автор: Earnest 13.2.2007, 10:23
Не надо заводить никакой массив: чем локальнее тем лучше.
Тебе всего-то надо спросить состояние check-боксов у парента.
Если лист-контрол является чайлдом tab-контрола, а тот, в свою очередь - формы - значит, вызови GetParent дважды:
Код

static_cast<CMyMainForm*>(pListCtrl->GetParent()->GetParent())->IsDlgButtonChecked (IDcheck);

Если вложенность не такая, скорректируй число GetParent().
Можно даже функцию нарисовать, чтобы добраться до формы от произвольного чайлда:
Код


CMyMainForm* GetParentForm (CWnd* pCtrl)
{
   for (CWnd* pPar = pCtrl->GetParent(); pPar != 0; pPar = pPar->GetParent())
  {
       CMyMainForm* pForm = dynamic_cast<CMyMainForm*>(pPar);     
       if (pForm)   return pForm;
   }
   return 0;
}


Если RTTI не включен, используй DYNAMIC_DOWNCAST() вместо dynamic_cast<>.

Автор: semerson 13.2.2007, 13:32
Это хорошо, но если вместо чекбоксов на главной форме есть CSliderCtrl и надо изменить положение бегунка, как поступить в этом случае?

Автор: Earnest 14.2.2007, 10:49
Точно так же: Добраться до главной формы и до ее контролов. Это если к моему посту вопрос, конечно.

Автор: semerson 17.2.2007, 20:12
Спасибо разобрался smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)