OVH Cloud OVH Cloud

Icones et contour

1 réponse
Avatar
Charly
Bonjour,

J'ai plusieurs questions concernant la manipulations des icones systèmes.

1) Je veux faire un arbre, style explorateur, affichant uniquement les
lecteurs de CD-Rom de la machine. Pour cela, pas de problème, mais j'ai un
problème lorsque j'affiche l'icone système correspondante au lecteur de
CD-Rom. En effet, un petit contour noir entoure l'icone et ca ne fait pas
joli. J'ai l'impression que c'est un pb de transparence mais je n'arrive pas
à voir comment le résoudre. Voici le morceaux de code concernant la
récupération des lecteurs de CD-Rom avec leur icone :

*********************************************************
//Création de la liste d'image associée l'arbre
CImageList* pImageList = new CImageList();
pImageList->Create(16, 16, ILC_COLORDDB | ILC_MASK , 0, 4);


CTreeCtrl& treeCtrl = GetTreeCtrl();
treeCtrl.SetImageList(pImageList, TVSIL_NORMAL);

HTREEITEM posteTravail = treeCtrl.InsertItem("Poste de travail");

char drive[4];
SHFILEINFO fileInfo;
ZeroMemory(&fileInfo,sizeof(SHFILEINFO));
int nbDrives = 0;

//Récupérationn des lecteurs de CD-ROM
for (int i='A'; i<='Z'; ++i )
{
sprintf(drive, "%c:\\", i);
if ( GetDriveType(drive) == DRIVE_CDROM )
{

SHGetFileInfo(drive,
0,
&fileInfo,
sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_SMALLICON |
SHGFI_DISPLAYNAME);

pImageList->Add(fileInfo.hIcon);

treeCtrl.InsertItem(fileInfo.szDisplayName, nbDrives, nbDrives,
posteTravail);

nbDrives++;
}
}

*********************************************************

Je suppose que c'est un flag à ajouter/changer soit dans le 3ème paramètre
de Create de CImageList, soit dans le 5e paramètre de SHGetFileInfo mais
j'ai essayé plusieurs combinaisons sans succès.
Voici une capture pour vous montrer à quoi ressemble les icones :
http://rihaoui.free.fr/divers/icones.jpg
Si quelqu'un avait une piste?

2) J'aimerais savoir comment faire pour récupérer l'icone du poste de
travail.

3) S'il y a des liens avec des exemples de manipulations d'icones systèmes,
je serai intéressé.

Merci pour votre aide.

Charly

1 réponse

Avatar
Christian ASTOR
Charly a écrit:

Je suppose que c'est un flag à ajouter/changer soit dans le 3ème paramètre
de Create de CImageList, soit dans le 5e paramètre de SHGetFileInfo mais
j'ai essayé plusieurs combinaisons sans succès.
Voici une capture pour vous montrer à quoi ressemble les icones :
http://rihaoui.free.fr/divers/icones.jpg
Si quelqu'un avait une piste?



C'est à cause de l'alpha channel des icônes XP (cf Google Groups =>
ILC_COLOR32 + manifest, ComCtl32.dll v.6)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/xptheming.asp


2) J'aimerais savoir comment faire pour récupérer l'icone du poste de
travail.



SHGetSpecialFolderLocation() puis SHGFI_PIDL

3) S'il y a des liens avec des exemples de manipulations d'icones systèmes,
je serai intéressé.



Manipulation ?
(l'ex le plus connu d'énumération du Shell Namespace (Explorer like) est
enumdesk.cpp de MSDN)