comment fait on pour créer un menu qui intervient si l'on clique sur l'icone
du programme dans la barre systray ???
je supose que AddSysTrayIcon(#SysTrayIcon, WindowID, ImageID)
le windowid() veut dire qu'elle fenetre doit-il ouvrir.









touche "rechercher"gadjet35 a écrit :bonjour je voudrai quelque info sur les systray :
comment fait on pour créer un menu qui intervient si l'on clique sur l'icone
du programme dans la barre systray ???
je supose que AddSysTrayIcon(#SysTrayIcon, WindowID, ImageID)
le windowid() veut dire qu'elle fenetre doit-il ouvrir.
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Code : Tout sélectionner
;- Window Constante
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
#Button_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 146, 154, 481, 258, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar , "test avec les systray")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_0, 130, 50, 180, 40, "fermer la fenetre")
ButtonGadget(#Button_1, 130, 150, 180, 40, "quitter le programme ")
EndIf
EndIf
EndProcedure
open_window_0()
image$ = OpenFileRequester("","","",0)
LoadImage(0,image$)
AddSysTrayIcon(1,WindowID(#window_0),ImageID())
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- MenuBar Constants
;
Enumeration
#MenuBar_0
EndEnumeration
Enumeration
#MENU_0
#MENU_1
#MENU_2
EndEnumeration
;- Gadget Constants
;
Enumeration
#Image_0
#Button_0
#Button_1
EndEnumeration
UseJPEGImageEncoder()
UsePNGImageDecoder()
UseJPEGImageDecoder()
Procedure Open_Window_0()
If OpenWindow(#Window_0, 0, 0, 1018, 707, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Fichier *.cur *.ico v4.5")
If CreateMenu(#MenuBar_0, WindowID())
MenuTitle("Images")
MenuItem(#MENU_0, "Charger image")
MenuTitle("Fichiers")
MenuItem(#MENU_1, "Nouveau fichier (*.cur)")
MenuItem(#MENU_2, "Nouveau fichier (*.ico)")
EndIf
If CreateGadgetList(WindowID())
ImageGadget(#Image_0, 20, 80, 980, 590, Image0, #PB_Image_Border)
ButtonGadget(#Button_0, 80, 20, 190, 40, "Créer un fichier *.ico")
ButtonGadget(#Button_1, 740, 30, 180, 40, "Créer un fichier *.cur")
EndIf
EndIf
EndProcedure
open_window_0()
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #button_0
fichier$ = SaveFileRequester("Enregistrer sous...","","*.ico|*.ico",0)
SaveImage(0,fichier$+".ico")
Case #button_1
fichier$ = SaveFileRequester("Enregistrer sous...","","*.cur|*.cur",0)
SaveImage(0,fichier$+".cur")
EndSelect
Case #PB_EventMenu
Select EventMenuID()
Case #menu_0
image$ = OpenFileRequester("charger...","","fichier image|*.bmp;*.jpeg;*.gif;*.jpg;*.png;*.dib",0)
LoadImage(0,image$)
SetGadgetState(#image_0,ImageID())
Case #menu_1
fichier$ = OpenFileRequester("Enregistrer sous...","","*.cur|*.cur",0)
SaveImage(0,fichier$+".cur")
Case #menu_2
fichier$ = OpenFileRequester("Enregistrer sous...","","*.ico|*.ico",0)
SaveImage(0,fichier$+".ico")
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
Code : Tout sélectionner
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_1
#Button_2
#Systray_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 130, 91, 648, 391, #PB_Window_TitleBar , "systray")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_1, 160, 90, 260, 70, "Rabaisser")
ButtonGadget(#Button_2, 160, 200, 260, 90, "Quitter")
EndIf
EndIf
EndProcedure
open_window_0()
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #button_1
image$ = OpenFileRequester("image","","*.ico|*.ico",0)
LoadImage(0,image$)
AddSysTrayIcon(#systray_0,WindowID(),ImageID())
Case #button_2
quit = 1
EndSelect
EndSelect
Until quit = 1
Il faut utiliser HideWindow((#Fenetre, 1) pour cacher la fenêtre et HideWindow(#Fenetre, 0) pour la cacher.gadjet35 a écrit :merci t'avait raison maintenant sa marche autre probleme
enfait j'utilise cette fonction pour que la ´fenetre disparaisse
mais le probleme c'est que j'ai utilser closewindow() mais l'icone par en meme temps après j'ai voulu cacher la fenetre qu'on ne la voit plus sa marche mais elle reste dans la barre en bas qui peut m'aider ???
Code : Tout sélectionner
;- Constantes fenêtres , Window Constant
Enumeration
#Win_Main
EndEnumeration
;-Constantes diverses , Miscellaneous Constant
Enumeration
#SysIcon
#Sytray
#PopUp
EndEnumeration
hIconSysTray = LoadImage(#SysIcon, "D:\PureBasic\MesProgs\ClearScreen\ClearScreen.ico")
Procedure Minimize(Flag.b)
DisableMenuItem(1,Flag) ; Active/Désactive le menu 1 - Enable/Disable menu 1
DisableMenuItem(2, Flag!1) ; Active/Désactive le menu 2 - Enable/Disable menu 2
HideWindow(#Win_Main, Flag) ; Réduit la fenêtre , Minimize window
EndProcedure
;- Ouverture de la fenêtre, et création des menus et du SysTray
;- Opening of the window, and creation of the menu and SysTray
hWnd = OpenWindow(#Win_Main, 300, 300, 100, 100, #PB_Window_SystemMenu | #PB_Window_Invisible , "SysTray-Test")
AddSysTrayIcon(#Sytray,hWnd,hIconSysTray) ; Ajoute l'icône dans le SysTray , Add the icon on the SysTray
CreatePopupMenu(#PopUp) ; Crée un menu Pop-Up , CreatePopUp menu
MenuItem(1,"Mettre en icône...") ; Ajout des menus , add items
MenuItem(2,"Afficher...")
MenuBar()
MenuItem(3,"Quitter")
DisableMenuItem(1,1) ; Menu inactif, Item disabled
DisableMenuItem(2,0) ; Menu actif Item enabled
;- Début de la boucle
;- Starting the loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_SysTray
Select EventType()
Case #PB_EventType_RightClick ; Un click droit affiche le menu , Right click display menu
DisplayPopupMenu(#PopUp, hWnd)
EndSelect
Case #PB_EventMenu
Select EventMenuID()
Case 1 : Minimize(1)
Case 2 : Minimize(0)
Case 3 : Quit = 1 : End
EndSelect
Case #PB_EventGadget
Select EventGadgetID()
EndSelect
Case #PB_EventCloseWindow : Minimize(1)
EndSelect
Until Quit = 1
End