Iconos en CTreeView

23/08/2004 - 11:39 por Sergio | Informe spam
Hola grupo.
Estoy intentando hacer un explorador de windows dentro de un programa,
pero tengo un problema para mostrar los iconos. El problema esta en que
me muestra todo el rato el mismo. Si el último que he cargado es un txt,
pues todos con el icono del notepad.
Hay algún método "mágico"?
Y ya que estoy, ¿se puede mostrar el símbolo [+] (el de expandir una
rama) apesar de que no tenga ningún subitem esa rama?
http://www.jabber.org
http://www.jabberes.org
http://www.miranda-im.org
 

Leer las respuestas

#1 Angel J. Hernández
23/08/2004 - 19:10 | Informe spam
Aja... cómo traes los iconos? Yo por lo general lo hago con un imagelist,
por ejemplo:

// Se supone que ya has cargado el ImageList

CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_TREEVIEW);
pTree->SetImageList(&m_imagelst, TVSIL_NORMAL); // m_imagelst = CImageList

// Estructura con información a insertar
TV_INSERTSTRUCT tvinsert;

tvinsert.hParent = NULL;
tvinsert.hInsertAfter = TVI_LAST;
tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
tvinsert.item.hItem = NULL;
tvinsert.item.state = 0;
tvinsert.item.stateMask = 0;
tvinsert.item.cchTextMax = 6;
tvinsert.item.iSelectedImage = 0;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
tvinsert.item.pszText = "Nodo Principal";
tvinsert.item.iImage= 2;


HTREEITEM hRoot = pTree->InsertItem(&tvInsert);

Haces así y cuando necesites insertar un nodo hijo estableces el miembro
hParent de la estructura al nodo padre...

También debes programar el evento TVN_SELCHANGED

Ejemplo

void tuclase::OnTvnSelchangedTreeView(NMHDR *pNMHDR, LRESULT *pResult) {
LPNMTREEVIEW pNMTreeView = reinterpret_cast <LPNMTREEVIEW> (pNMHDR);
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_TREEVIEW);
HTREEITEM hSelected = pNMTreeView->itemNew.hItem;

if (hSelected != NULL) {
char text[30];
TV_ITEM item;
item.mask = TVIF_HANDLE | TVIF_TEXT;
item.hItem = hSelected;
item.pszText = text;
item.cchTextMax = 29;
VERIFY(pTree->GetItem(&item));
SetDlgItemText(IDC_SELECCIONADO, text);
}
*pResult = 0;
}

Espero te sirva... Saludos


Angel J. Hernández M.
MCSD






"Sergio" escribió en el mensaje
news:
Hola grupo.
Estoy intentando hacer un explorador de windows dentro de un programa,
pero tengo un problema para mostrar los iconos. El problema esta en que
me muestra todo el rato el mismo. Si el último que he cargado es un txt,
pues todos con el icono del notepad.
Hay algún método "mágico"?
Y ya que estoy, ¿se puede mostrar el símbolo [+] (el de expandir una
rama) apesar de que no tenga ningún subitem esa rama?
http://www.jabber.org
http://www.jabberes.org
http://www.miranda-im.org

Preguntas similares