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


Автор: metoflex 18.9.2010, 21:19
Создал отдельный класс для CTreeCtrl (TreeClass.cpp)  в свою очередь в (TreeClass.h) я создал структуру:

Код

struct CNodeData
{
    int param;
};


В TreeClass.cpp Я переопределил  InsertItem так:
Код


HTREEITEM TreeClass::InsertItem(_In_z_ LPCTSTR lpszItem, _In_ HTREEITEM hParent,
        _In_ HTREEITEM hInsertAfter)
{
    HTREEITEM retVal = CTreeCtrl::InsertItem(lpszItem,hParent,hInsertAfter);
    CNodeData* pData = new CNodeData;
    SetItemData(retVal,(DWORD_PTR)pData);

    return retVal;
}



Я это создавал с осознанием того, что для каждого элемента дерева будет создаваться своя структура, только вот столкнулся с проблемой... как мне записывать данные в структуру.... как получить доступ к данной структуре из родительского класса (TreeProjectDlg.cpp). Как мне писать в структуру, относящуюся конкретно к этому элементу древа, информацию и извлекать оттуда... Зашёл в тупик...

Огромное Спасибо!

P.S.

У меня есть предположение:

Через обработку нажатия на кнопку так заносить информацию (Возможно написал глупость):

Код

void CTreeProjectDlg::OnBnClickedButton3()
{
    HTREEITEM set;
    set=TreeCntrl.GetSelectedItem();
    TreeCntrl.SetItemData(set,5);
}


Но как скажем извлекать информацию из структуры и писать в файл, так и не придумал...

Автор: metoflex 18.9.2010, 22:02
Проблему решил так))

Код

HTREEITEM set;
    CNodeData* head;
    CString str;
    set=TreeCntrl.GetSelectedItem();
    DWORD_PTR tetra=TreeCntrl.GetItemData(set);
    head=(CNodeData*)tetra;
    head->param=10;

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