Page 1 sur 1

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

Posté : dim. 24 juin 2012 00:36
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 ?

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

Posté : dim. 24 juin 2012 01:46
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.

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

Posté : dim. 24 juin 2012 04:51
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

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

Posté : dim. 24 juin 2012 11:06
par blacksoul305
Salut benjahinfo,

merci de lire cette règle à l'avenir qui concerne la coloration syntaxique.

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

Posté : dim. 24 juin 2012 12:10
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: