Re: CTreeControl не отображает рисунки
От: Logot Украина  
Дата: 26.06.05 23:07
Оценка:
Здравствуйте, Minimaxus, Вы писали:

M>1) есть следующий код:

M>

M>    CImageList il;
M>    il.Create(IDB_BITMAP1, 24, 2, RGB(255,0,255));

M>    m_tree.SetImageList(&il, TVSIL_NORMAL);
M>    m_tree.InsertItem("maza",1,1);

M>

M>Я его в инициализации диалога вставил.
M>Здесь IDB_BITMAP1 — это ресурс Bitmap, который имеет размер 48*16. Т.е. первая строка вроде как 2 рисунка должна выделить.
M>m_tree — указатель на CTreeControl
M>Запускаю приложение и вижу мой диалог бокс с TreeControl. В TreeControl видно отступы в 24 пикселя (ну типа на глаз так), но все мои рисунки — это просто белый фон контрола.
M>Чиатю вроде бы все с МСДН.МИКРОСОФТА и не могу понять почему не работает как надо.

M>2) Еще я просто пробовал загрузить IDB_BITMAP1 как CBitmap и добавить его в CImageList. Ошибок нет, но когда я получаю свойства Битмапа следующим способом:

M>
M>        BITMAP infoBMP;
M>    bm.GetBitmap(&infoBMP);
M>

M>то в поле LPVOID bmBits; вижу указатеь на NULL. Т.е. как-будто картинки и нету.
M>Что тут не так?

Вот примерно такой код, думаю поможет!
void CLeftView::OnInitialUpdate()
{
CView::OnInitialUpdate();
CRect rect;
this->GetClientRect(&rect);
m_Tree.Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_HSCROLL|WS_VSCROLL|TVS_HASLINES|TVS_HASBUTTONS|
TVS_LINESATROOT,rect,this,IDC_LEFTTREE);
m_Image.Create(IDB_MYBITMAP,16,3,RGB(255,0,255));//IDB_MYBITMAP — ID ресурса,16 — отсекатель ширины картинки в 16 бит
m_Tree.SetImageList(&m_Image,TVSIL_NORMAL);
FillTreeInLeftView();
}

void CLeftView::FillTreeInLeftView()
{
TVINSERTSTRUCT tvs;
tvs.hParent=NULL;
tvs.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvs.item.iImage=0;//закрытая папка
tvs.item.iSelectedImage=1;//картинка при выделениии, в ресурсе IDB_MYBITMAP 2-ая по счёту, у меня значок открытой папки
tvs.item.pszText="Root";
HTREEITEM hRoot=m_Tree.InsertItem(&tvs);
for(short i=0;i<10;i++)
{
tvs.hParent=hRoot;
tvs.item.iImage=2;//значок файла
tvs.item.iSelectedImage=3;//значок выделеного файла
tvs.item.pszText="Child";
m_Tree.InsertItem(&tvs);
}

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.