[R] Disparition d'icône avec une StatusBar

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

[R] Disparition d'icône avec une StatusBar

#1

Message par benjahinfo »

Bonjour,

J'utilise une statusbar en 3 parties comme ceci:

Code : Tout sélectionner

Global $StatusBar1 = _GUICtrlStatusBar_Create($GUI_MAIN, -1, "", BitOR($SBARS_TOOLTIPS, $WS_VISIBLE, $WS_CHILD, $WS_BORDER), $WS_EX_CLIENTEDGE)
Global $StatusBar1_PartsWidth[3] = [19, 224, -1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "", 0)
_GUICtrlStatusBar_SetText($StatusBar1, "", 1)
_GUICtrlStatusBar_SetText($StatusBar1, "", 2)
_GUICtrlStatusBar_SetMinHeight($StatusBar1, 18)

La première partie est celle qui nous intéresse pour mon problème, j'y met un icône qui change selon l'état de mon logiciel avec cette commande:

Code : Tout sélectionner

_GUICtrlStatusBar_SetIcon($StatusBar1, 0, 4, "RESSOURCES.dll")
Or je constate que mon icône disparaît à chaque fois que j’emploie la commande "_GUICtrlStatusBar_Resize($StatusBar1)"
J'utilise cette commande parce que ma GUI peut s'étendre, ou se rétrécir.

Je remarque que l'icône disparait aussi si je place une fenêtre (N'importe laquelle) au dessus de celui-ci. De même si je réduis et agrandis la fenêtre de ma GUI.

Auriez-vous une idée ?
Modifié en dernier par benjahinfo le dim. 24 juin 2012 12:02, modifié 3 fois.
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [R] Disparition d'icône avec une StatusBar

#2

Message par benjahinfo »

Re,

J'ai donc réussis à trouver la solution sur le forum Anglais ici:
http://www.autoitscript.com/forum/topic ... ntry734853

Merci à Prog@ndy pour cette fonction qui permet d'extraire les icônes depuis un programme en .exe ou un fichier (une dll par exemple).
à utiliser lorsque l'on veut placer un icône dans une Statusbar qui s'actualise, afin de ne pas le perdre:

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Name...........: _WinAPI_ExtractIcon
; Description ...: Extracts an Icon from an Exe-File
; Syntax.........: _WinAPI_ExtractIcon($sFile, $iIndex, $iSize=0)
; Parameters ....: $sFile  - Icon File
;                  $iIndex - Icon Index
;                  $iSize  - Large: 1
;                            Small: 0 (default)
; Return values .: Success      - hIcon handle
;                  Failure      - 0
; Author ........: Prog@ndy
; Modified.......:
; Remarks .......:
; Related .......: _WinAPI_ExtractIconEx
; Link ..........;
; Example .......; Yes
; ===============================================================================================================================
Func _WinAPI_ExtractIcon($sFile, $iIndex, $iSize=0)
    ; Author: Prog@ndy
    Local $hIcon = DllStructCreate("ptr"), $result
    Switch $iSize
        Case 1
            $result = _WinAPI_ExtractIconEx($sFile, $iIndex, DllStructGetPtr($hIcon),0,1)
        Case 0
            $result = _WinAPI_ExtractIconEx($sFile, $iIndex, 0, DllStructGetPtr($hIcon),1)
    EndSwitch
    If $result=0 Then Return SetError(1,0,0)
    Return DllStructGetData($hIcon,1)
EndFunc
Après avoir placer cette fonction dans votre programme, vous pouvez insérer vos icônes dans la StatusBar de la façon suivante:

Code : Tout sélectionner

_GUICtrlStatusBar_SetIcon ($hStatus, 0, _WinAPI_ExtractIcon("shell32.dll",23)
'"shell32.dll",23' n'est qu'un exemple, à adapter selon vos besoin.
Modifié en dernier par benjahinfo le dim. 24 juin 2012 12:02, modifié 1 fois.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [R] Disparition d'icône avec une StatusBar

#3

Message par TopXm »

Hello :)

J'ai bien vu que tu as solutionné ton souci et d'ailleurs, j'étais aussi tombé à l'époque sur cette soluce au poil quand j'en ai eu besoin.

Donc ceci pour juste ajouter (sait-on jamais, ça pourrait aider lors d'une future recherche en rapport avec ce sujet) que :
  • La fonction (comme indiquée dans l'aide) fonctionne aussi très bien avec des .ico
  • Qu'on peut aussi charger les icônes dans un tableau pour les afficher ultérieurement dans la StatusBar
Pour information :
► Afficher le textePetit exemple
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [R] Disparition d'icône avec une StatusBar

#4

Message par blacksoul305 »

Salut benjahinfo,

merci de lire cette règle à l'avenir qui concerne la coloration syntaxique.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [R] Disparition d'icône avec une StatusBar

#5

Message par benjahinfo »

@blacksoul305: Salut ! Voila c'est modifié désolé. :D

@TopXm: Merci pour ces précisions, je n'avais pas bien compris la fonction que j'avais découverte. Cela va me permettre de l'utiliser aussi pour le Tray ! :wink:
Répondre