Тут не только C++ на Винде , тут знание бидера требуется так что врядли помогу.
Но кстати так как подозреваю что все это написано "вокруг" обычного виндосовского контроля то при таких обьемах советую пользоватся динамической прорисовкой (так называемый virtual control) , обычно это один из стилей контроля - там когда поставишь этот флажок то вообще ресурсы давать не надо , есть message который приходит для каждого объекта
отображаемого в данный момент на экране (ты в начале только задаешь количество нодов и все) а на этот месадж ты и заполняешь структуру передавая айди картинки , текст и т.д. для конкретного рисуемого в данный момент элемента.
Если честно с деревом я такое не делал , только с листами но то что можно - факт :)
Added:MFC:
CODE |
1. Initialize list control as being virtual: BOOL CMyListView::PreCreateWindow(CREATESTRUCT& cs) { cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT | LVS_OWNERDATA; return CListView::PreCreateWindow(cs); }
2. Call SetItemCountEx on the underlying List Control when you want to set the size:
GetListCtrl().SetItemCountEx( nRecords, LVSICF_NOINVALIDATEALL | LVSICF_NOSCROLL );
3. Handle LVN_GETDISPINFO messages via: ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetDispInfo)
void CMyListView::OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult) { pDispInfo->item.pszText = some cached string that outlives this message handler; }
|
Added:А тебе вроде сюда :
http://www.sourcecodeonline.com/details/virtual_treeview.html