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


Автор: tonchitos 12.3.2008, 16:31
В общем мне надо большое дерево с неизвестным количеством потомков у каждого узла. 
Мне надо иметь графическое представление, и соответственно данные.

С графикой разобралась более менее...
Варианты:
дерево пихаю в файл
при инициализации прочитаываю коль там не пусто,
создаю структуру какую то (мне контейнер тут советуют)
во время работы проги работаю с этой структурой, потом все опять в файл.

Как то так, да?



Автор: tonchitos 12.3.2008, 18:55
еще вопрос, у меня при добавлении в дерево узлов, узлы должны иметь текст "node" а ни фига.

вот код ф-ии
Код


void TreeDlg::OnBnClickedAddNode()
// Press AddNode
{
CString str;
    m_tree.ModifyStyle(LVS_TYPEMASK,TVS_LINESATROOT | TVS_HASLINES |
                        TVS_HASBUTTONS | TVS_EDITLABELS );

    TV_INSERTSTRUCT tvstruct;
    HTREEITEM pNode,pItm;

    pItm = m_tree.GetSelectedItem();
    tvstruct.hParent = pItm;
    tvstruct.item.mask = TVIF_TEXT ;
    tvstruct.item.pszText =(LPWSTR)"node";

    pNode = m_tree.InsertItem(&tvstruct);

    m_tree.SetFocus();


    // TODO: Add your control notification handler code here
}


что не так и почему такое может быть

Автор: korian 12.3.2008, 19:07
перед тем как использовать что-то типа (LPWSTR) - хорошенько подумайте.
а лучше вообще такой вариант не использовать - это осталось для совместимости с языком C
в C++ использовать надо const_cast, reintrepret_cast, static_cast или dinamic_cast, в зависимости от того, что нужно.
возможен такой вариант:
tvstruct.item.pszText = L"node";
но лучше такой:
tvstruct.item.pszText = TEXT("node");

Автор: tonchitos 12.3.2008, 22:26
korian, Спасибо вам огромное!

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