Iconos en un CTreeCtrl

20/10/2004 - 22:43 por William GS | Informe spam
Hola a todos. Tengo un CTreeCtrl con sus respectivos
íconos, pero a algunos de ellos tengo que suporponer otro
ícono pequeño, tal como lo hace el explorardor de Windows
cuando se comparte una carpeta: añade una "manito" al
icono normal de la carpeta.
¿Tiene idea de como hacerlo? o ¿saben donde puedo
encontrar información al respecto?

Muchas gracias,
William GS
 

Leer las respuestas

#1 Fernando Marin
21/10/2004 - 02:26 | Informe spam
Hola William

CTreeCtrl no tiene esa funcionalidad.

Para lo que quieres hacer, debes modificar las imagenes que añades a
CImageList
Para Modificar los Bitamp deberas crear un CDC compatible con la imagen
(despues debes borrarlo) que tienes y copiar primero la imagen de fondo y
luego el ícono pequeño, para quitarte problemas, que las dos imagenes tenga
la misma paleta de colores. Te pongo mas o menos como lo tienes que hacer,
ten en cuenta que lo he escrto un poco rápido y no lo he testeado, así que
no tiene que ser totalmente correcto, pero te dara una idea.


CBitmap bmpImagen;
CBitmap bmpIcono;
// Lees el Bitmap de la imagen y del icono a poner
if ((bmpImagen.LoadBitmap(IDB_BITMAP_IMAGEN)==TRUE) &&
(bmpIcono.LoadBitmap(IDB_BITMAP_ICONO)==TRUE)
{
// Creas un dispositivo de contexto compatible con la pantalla
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Guardas la imagen que tenga el dispositivo, par luego restaurarla
// y pones tu bmpImagen en el dispositivo
CBitmap* pOldBitmap = dcMemory.SelectObject(&bmpImagen);
// Añades tu icono
dcMemory->BitBlt(0,0,15,15, bmpIcono, 0, 0, SRCCOPY);
// Guardas la nueva imagen en bmpImagen
if(bmpImagen.CreateBitmapIndirect(dcMemory.GetCurrentBitmap())=úLSE)
{
// Aqui pones código para controlar un posible error (opcional)
}

// Restauras la imagen del dispositivo
dcMemory.SelectObject(pOldBitmap);
// Borra el contexto de dispositivo que habias creado
dcMemory.DeleteDC();
}


Un saludo
Fernando Marín

http://www.arrendamientos.biz




"William GS" escribió en el mensaje
news:1ad801c4b6e5$6b522c90$
Hola a todos. Tengo un CTreeCtrl con sus respectivos
íconos, pero a algunos de ellos tengo que suporponer otro
ícono pequeño, tal como lo hace el explorardor de Windows
cuando se comparte una carpeta: añade una "manito" al
icono normal de la carpeta.
¿Tiene idea de como hacerlo? o ¿saben donde puedo
encontrar información al respecto?

Muchas gracias,
William GS

Preguntas similares