2009-06-30 10 views
2

Je veux ajouter le nœud Icon to treeview, en utilisant C++. Je veux obtenir les icônes de système, j'ai essayéComment faire pour obtenir l'icône de fichier en utilisant C++

J'ai essayé avec,

PMString ucPath("C:\\path\\to\\file.extension"); 
SHFILEINFO info;  

::SHGetFileInfo(ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, &info, sizeof(info), 
    SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON); 

iconView->SetRsrcID((RsrcID) info.hIcon); 
::DestroyIcon(info.hIcon); 

où, SetResrcID, PMString sont l'API InDesing et IconView est le ControlView de l'arbre, je ne reçois pas ce qui se passe faux, si quelqu'un a une idée s'il vous plaît suggérer.

Merci, Praveen Mamdge

Répondre

2

Voici les codes que j'utilise dans ma demande, vous devez changer l'icône d'une image bitmap.

PMString ucPath("C:\\path\\to\\file.extension"); 
SHFILEINFO info;  

::SHGetFileInfo(ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, &info, sizeof(info), 
    SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON); 
ICONINFO stIconInfo; 
GetIconInfo(s_sfi.hIcon, &stIconInfo); 
HBITMAP hBmp = stIconInfo.hbmColor; 
DestroyIcon(s_sfi.hIcon) ; 

La meilleure façon de procéder est d'utiliser l'index d'icône système avec SHGFI_SYSICONINDEX.

2

Une chose comme ça, Extraire l'icône du fichier en premier.

SHFILEINFO stFileInfo; 
SHGetFileInfo(file, 
       FILE_ATTRIBUTE_NORMAL, 
       &stFileInfo, 
       sizeof(stFileInfo), 
       SHGFI_ICON | SHGFI_LARGEICON); 

Ajoutez ensuite à la liste d'images et utilisez l'index pour définir l'icône.

m_nIndex = m_ilLargeIcons.Add(stFileInfo.hIcon); 
0

Ceci est l'extrait de code, observez la ligne par ligne:

PMString ucPath ("C: \ chemin \ \ file.extension"); SHFILEINFO info;
:: SHGetFileInfo (ucPath.GrabTString(), FILE_ATTRIBUTE_NORMAL, & informations, sizeof (info), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON);

iconView-> SetRsrcID ((RsrcID) info.hIcon);

:: DestroyIcon (info.hIcon);

Après cette ligne: iconView->SetRsrcID((RsrcID) info.hIcon);, vous appelle :: DestroyIcon qui a détruit cette icône que vous avez enregistré.