Page 1 sur 1

Changer dynamiquement icône application PB

Publié : dim. 25/avr./2021 17:01
par cage
Bonjour a tous,

Est-il possible de changer dynamiquement l'icône d'une application PB (celle qui s'affiche en haut a gauche de la fenêtre de l'application) comme on peut le faire avec ChangeSysTrayIcon(#SysTrayIcon, ImageID)

Merci pour l'aide que vous pourrez m'apporter.
cage

Re: Changer dynamiquement icône application PB

Publié : dim. 25/avr./2021 18:10
par case
en utilisant les api windows

Code : Tout sélectionner

;d'apres le code de rsbasic.de

hIcon = ExtractIcon_(0, #PB_Compiler_Home + "PureBasic.exe", 1)

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  SendMessage_(WindowID(0),#WM_SETICON,#False,hicon) 
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


DestroyIcon_(hIcon)


Re: Changer dynamiquement icône application PB

Publié : dim. 25/avr./2021 19:06
par cage
Merci case pour ta réponse.
C'est ce que je cherchais a faire avec juste une petite modification.
Voici le code modifié pour arriver a mes fins:

Code : Tout sélectionner

DataSection ; Images
  Image_App1:
  IncludeBinary "icones\app1.ico"
  Image_App2:
  IncludeBinary "icones\app2.ico"
  Image_App3:
  IncludeBinary "icones\app3.ico"
EndDataSection

Enumeration Images
  #Image_App1
  #Image_App2
  #Image_App3
EndEnumeration

Global Icon1 = CatchImage(#Image_App1, ?Image_App1)
Global Icon2 = CatchImage(#Image_App2, ?Image_App2)
Global Icon3 = CatchImage(#Image_App3, ?Image_App3)

NewMap image()
image("1") = Icon1
image("2") = Icon2
image("3") = Icon3

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  Repeat
    ForEach image()
      SendMessage_(WindowID(0),#WM_SETICON,#False,image())
      Delay(1000)
      WindowEvent()
    Next
  Until WaitWindowEvent(20) = #PB_Event_CloseWindow

EndIf

DestroyIcon_(hIcon)
Les icônes sont embarquées directement dans l’exécutable et selon les circonstances, je peux adapter l'icône de la fenêtre.

Merci pour ton aide.
cage