J'aimerais utiliser les icônes de Windows dans une application ... Extraire par exemple une icône de shell32.dll et l'associer à un item d'un TreeList ? Comment dois-je faire ?
J'aimerais utiliser les icônes de Windows dans une application ... Extraire par exemple une icône de shell32.dll et l'associer à un item d'un TreeList ? Comment dois-je faire ?
Voici:
Exemple repris du SUPER logiciel API-Guide ( http://www.allapi.net )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 'This project needs a PictureBox, called 'Picture1' 'In general section Private Declare Function DrawIcon Lib "user32" Alias "DrawIcon" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Form_Load() 'KPD-Team 1998 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net Dim Path as String, strSave as string 'Create a buffer string strSave = String(200, Chr$(0)) 'Get the windows directory and append '\REGEdit.exe' to it Path = Left$(strSave, GetWindowsDirectory(strSave, Len(strSave))) + "\REGEdit.exe" 'No pictures Picture1.Picture = LoadPicture() 'Set graphicmode to 'persistent Picture1.AutoRedraw = True 'Extract the icon from REGEdit return1& = ExtractIcon(Me.hWnd, Path, 2) 'Draw the icon on the form return2& = DrawIcon(Picture1.hdc, 0, 0, return1&) End Sub
C'est un forum VC++ et non VB.
Regarde l'API ExtractIcon
A+ !
J'avais même pas fait attention...
Mais bon, à part le codage pur, l'esprit reste le même...
Ben oui, c'est pour cela que cela m'a quand même aidéEnvoyé par Bendes
![]()
La seule chose c'est que les icônes que j'associe au CTreeCtrl ne sont pas affichées avec une super qualité ... On dirait que CImageList éprouve des difficultés à convertir des icônes en bitmap ... Si qqn sait comment améliorer la qualité d'affichage / conversion cela m'intéresse :-)
Voici le code que j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // m_Images.Create(16, 16, ILC_COLOR32 | ILC_MASK, 5, 1); void CTreeMp3::Init() { // Recherche de "shell32.dll" (pour les icônes) UINT Length; char *szBuffer; Length = GetSystemDirectory(NULL,0); szBuffer = new char[Length+1]; GetSystemDirectory(szBuffer, Length); CString path; path.Format("%s\\shell32.dll", szBuffer); delete[] szBuffer; // Extraire les icônes CBitmap bitmap; HICON icon; icon = ExtractIcon(AfxGetInstanceHandle(), path, (DWORD) 160); // Artistes m_Images.Add(icon); ... SetImageList(&m_Images, TVSIL_NORMAL); }
Je fais les demandes et les réponses seul :-)
La fonction qu'il faut utiliser est : ExtractIconEx
Partager