Denis, j'ai un bean's avec MoreMenu 3.20 qui ne se produisait pas avant.
Dans ma boucle, pour appeler une fenêtre secondaire, je ferme la fenêtre principale par un CloseWindow() et à la fermeture de ma fenêtre secondaire je relance ma fenêtre principale (qui se trouve dans une procédure) en appelant à nouveau cette procédure. Désormais, le Menu disparaît totalement et pas moyen de le récupérer alors que le PopUpMenu (de la systrayicone) lui est toujours actif. Rien au debugger.
Je vais faire d'autre tests et un code d'exemple pour essayer d'y voir clair et je te tiens au courant. Cela ne se produisait pas avec tes précédentes versions. Ceci sous Win Xp home sp2.
Voilà un code pour test:
A moins que cela ne vienne de moi et de mon code. Si quelqu'un y voit une erreur, qu'il la signale, ça évitera à Denis de chercher pour rien, merci.
;-CONSTANTES
Enumeration
#WinPB = 0
#SysTrayIcon
#win_prefs
#btn_Quit_Prefs
;-Constantes Menu
#Menu
#MenuFichier
#_1
#MenuBarColor_1
#_2
#MenuBarColor_2
#_3
;-Constantes PopUpMenu
#PopUp
#_28
#_29
#_30
#PopUpMenuBar_1
;-constantes gadgets
#btn_prefs
EndEnumeration
Procedure Prefs_User()
If OpenWindow( #win_prefs ,0,0,500,460, #PB_Window_SystemMenu | #PB_Window_WindowCentered | #PB_Window_TitleBar , " Préférences ") And CreateGadgetList (WindowID( #win_prefs ))
ButtonGadget ( #btn_Quit_Prefs , 20,20,80,20," Quitter ")
Endif
Repeat
EventID = WaitWindowEvent ()
If EventID = #PB_EventGadget
Select EventGadgetID ()
Case #btn_Quit_Prefs : Quit = 1
EndSelect
Endif
Until EventID = #PB_EventCloseWindow Or Quit = 1
CloseWindow ( #win_prefs )
EndProcedure
Procedure GetIcone(WinHandle)
hInstance = GetWindowLong_(WinHandle, #GWL_HINSTANCE )
app.s = Space (255)
GetModuleFileName_(0,@app,255)
ProcedureReturn ExtractIcon_(hInstance, app, 0)
EndProcedure
Global VarMT.ItemParams
Global Var.ItemParams
Procedure WinPB()
ExamineDesktops ()
Largeur$ = Str( DesktopWidth (0))
Hauteur$ = Str( DesktopHeight (0))
If Val (Largeur$)>800 And Val (Hauteur$)>600
FlagWin = #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MaximizeGadget
Else
FlagWin = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MaximizeGadget
Endif
If OpenWindow( #WinPB ,0,0,790,550,FlagWin," MoreMenu test ") And CreateGadgetList (WindowID( #WinPB ))
x = WindowWidth ()
y = WindowHeight ()
hIconSysTray = GetIcone( #WinPB )
AddSysTrayIcon ( #SysTrayIcon ,WindowID( #WinPB ),hIconSysTray)
SysTrayIconToolTip( #SysTrayIcon ," PureBasic DirAndTools ")
;-Menu principal
If CreateMenuColor( #Menu , WindowID())
VarMT\Text = " Fichier "
VarMT\TextColor = #Black
VarMT\TextAreaBkGndColor = #White
VarMT\SelectedTextColor = #White
VarMT\SelectedBkGndColor = RGB ($9D,$9D,$FF)
VarMT\SelectedFrameColor = RGB ($0,$0,$A0)
VarMT\MouseOverMenuTitleTextColor = #Black
VarMT\MouseOverMenuTitleBkGndColor = RGB(191, 210, 245)
VarMT\MouseOverMenuTitleFrameColor = RGB(49, 106, 197)
MenuTitleColor( #MenuFichier , VarMT)
Var\Text = " Ouvrir "
Var\TextColor = #Black
Var\IconAreaBkGndColor = RGB ($CE,$DB,$DB)
Var\TextAreaBkGndColor = #White
Var\SelectedTextColor = #Black
Var\SelectedBkGndColor = RGB (191, 210, 245)
Var\SelectedFrameColor = RGB (49, 106, 197)
MenuItemColor( #_1 , Var) : SetMenuItemStateColor( #_1 , 1)
Var\MenuBarColor = 255
MenuBarColor( #MenuBarColor_1 , Var)
Var\Text = " Quitter "
MenuItemColor( #_2 , Var)
Var\MenuBarColor = 255
MenuBarColor( #MenuBarColor_2 , Var)
Var\Text = " Préférences "
MenuItemColor( #_3 , Var)
Endif
;-PopupMenu Systray
If CreatePopupMenuColor( #PopUp )
Var\Text = " Fenêtre principale "
Var\TextColor = #Blue
Var\IconAreaBkGndColor = $E3F0D6
Var\TextAreaBkGndColor = #White
Var\SelectedTextColor = 255
Var\SelectedBkGndColor = RGB (191, 210, 241)
Var\SelectedFrameColor = RGB (49, 106, 197)
PopupMenuItemColor( #_28 ,Var)
Var\Text = " Fermer "
PopupMenuItemColor( #_29 ,Var)
PopupMenuBarColor( #PopUpMenuBar_1 ,Var)
Var\Text =" Quitter "
PopupMenuItemColor( #_30 ,Var)
Endif
ButtonGadget ( #btn_prefs , 20,20,80,20," Preferences ")
Endif
EndProcedure
;-PROGRAMME
WinPB()
Repeat
Event = WaitWindowEvent ()
;-Systray
If Event = #PB_Event_SysTray
Select EventType ()
Case #PB_EventType_RightClick
DisplayPopupMenuColor( #PopUp , WindowID( #WinPB ))
EndSelect
Endif
If Event = #PB_EventGadget
Select EventGadgetID ()
Case #btn_prefs
CloseWindow ( #WinPB )
RemoveSysTrayIcon ( #SysTrayIcon )
Prefs_User()
WinPB()
EndSelect
Endif
;-fonctions Menu et PopUp
Select Event
Case #PB_EventMenu
Select Event MenuID ()
Case #_2 :Quit = #True
Case #_3 : CloseWindow ( #WinPB )
RemoveSysTrayIcon ( #SysTrayIcon )
Prefs_User()
WinPB()
Case #_30 :Quit = #True
EndSelect
;-FIN
Case #PB_Event_CloseWindow : HideWindow( #WinPB , 1)
EndSelect
Until Quit
End