Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с классом CTreeCtrl (MFC)

13K
01 сентября 2006 года
Osiris
9 / / 22.12.2005
У меня есть немодальное диалоговое окно поверх главного вида - в этом окне есть дерево, как в Windows Explorer - мне нужно выделить одну из строк этого дерева, когда активен главный вид, а не окно - как это сделать?

Обычный вызов функции

CTreeCtrl* pTreeObj->SelectItem( hItem );

не работает, точно так же, как не работают все остальные функции указателя класса pTreeObj при вызове, когда диалоговое окно не активно. То есть и узнать выделенную строку, а следовательно и удалить ее не могу.
398
01 сентября 2006 года
Alexandoros
630 / / 21.10.2005
Фокус передавать пробовал?
13K
02 сентября 2006 года
Osiris
9 / / 22.12.2005
Первый раз слышу - это как? И где можно почитать про это?
13K
03 сентября 2006 года
Osiris
9 / / 22.12.2005
Проблема немного прояснилась - фокус тут не сильно помогает - на окно самого дерева я его вывел, а вот изменить само дерево не могу, пытаюсь так:

BOOL CDialogObj::OnSetActive()
{
pTreeObj->SelectItem( hUnits );

return CPropertyPage::OnSetActive();
}

Но когда окно только активируется - доступа к классу дерева еще нет - так когда его можно получить?
398
03 сентября 2006 года
Alexandoros
630 / / 21.10.2005
Как это доступа к класу нету, когда окно активируется?
Вытяни на-гора код схематичный, шо-ли?
350
04 сентября 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=Osiris]Но когда окно только активируется - доступа к классу дерева еще нет - так когда его можно получить?[/QUOTE]
В момент создания окна или инициализации диалога есть доступ ко всем контролам, что содержатся в окне.
Доступа нет только в конструкторе класса окна.
13K
04 сентября 2006 года
Osiris
9 / / 22.12.2005
Мне нужно получить доступ к классу дерева, когда окно уже инициализировано - его нужно просто поменять - выделить строку, или удалить ее.

Если сформулировать точно -как окно обновляет вид дерева, когда оно делается активный - UpdateData оно не вызывает - я его перехватить пытался - как?
350
05 сентября 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=Osiris]Мне нужно получить доступ к классу дерева, когда окно уже инициализировано - его нужно просто поменять - выделить строку, или удалить ее.
[/QUOTE]
У тя ID контрола-дерева есть? Объект диалога есть? Дык получи указатель на контрол-дерево:
 
Код:
CTreeCtrl *pTree = (CTreeCtrl*)(pDlg->GetDlgItem (IDC_TREE));
pTree->ДелаюЧтоХочу();

Только не удаляй объект pTree, т. е. не вызывай delete pTree, это произойдет автоматически.
13K
05 сентября 2006 года
Osiris
9 / / 22.12.2005
cheburator

Да, спасибо,что ответил - именно в этом и была проблема - каждый раз, когда необходимо использовать класс дерева, нужно заново получить указатель.

Спасибо всем!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог