; Auteur : Le Soldat Inconnu
; Version de PB : 3.92
;
; Explication du programme :
; Ajouter des éléments dans le SystemMenu
; Le SystemMenu est le menu qui apparait quand on fait clic droit sur le bouton du programme dans la barre des tâches.
; Ce code montre comment ajouter des éléments et des séparations
#MIIM_SUBMENU = 4
#MIIM_TYPE = 16
Procedure WindowCallback(WindowID, message, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select message
Case #WM_SYSCOMMAND
Select wParam
Case 20
MessageRequester("Info", "Menu 1", 0)
Case 21
MessageRequester("Info", "Menu 2", 0)
Case 111
MessageRequester("Info", "Sous-Menu 111", 0)
Case 112
MessageRequester("Info", "Sous-Menu 112", 0)
EndSelect
EndSelect
ProcedureReturn result
EndProcedure
; on ouvre une fenêtre avec un SystemMenu
OpenWindow(0, 200, 200, 200, 200, #PB_Window_SystemMenu, "SystemMenu")
; On récupère le handle du SystemMenu
SysMenu = GetSystemMenu_(WindowID(), #False)
DefType.MENUITEMINFO MenuInfo
MenuInfo\cbSize = SizeOf(MENUITEMINFO)
MenuInfo\fmask = $2 | $40
; On insert une séparation
MenuInfo\fType = #MFT_SEPARATOR
InsertMenuItem_(SysMenu, 5, #MF_BYPOSITION, MenuInfo)
; Le 5 correspond à la position dans le menu
; On insert un élément dans le SystemMenu
MenuInfo\fType = #MFT_STRING
MenuInfo\fState = #MFS_DEFAULT
MenuInfo\wID = 20 ; ID du menu
Texte.s = "Menu 1" ; Texte de l'élément
MenuInfo\dwTypeData = @Texte
MenuInfo\cch = Len(Texte) + 1
InsertMenuItem_(SysMenu, 6, #MF_BYPOSITION, MenuInfo)
; Le 6 correspond à la position dans le menu
;******************************************
;******************************************
; On insert un sous-menu
PopupMenu11 = CreatePopupMenu_()
; ajoute un élément au sous-menu car CreatePopupMenu_() cré un sous-menu vide
Texte.s = "Menu 11" ; Texte de l'élément
AppendMenu_(SysMenu, #MF_STRING|#MF_POPUP , PopupMenu11, Texte.s)
DrawMenuBar_(PopupMenu11)
; On insert un élément dans le sous-menu
MenuInfo\fType = #MFT_STRING
MenuInfo\fState = #MFS_DEFAULT
MenuInfo\wID = 111 ; ID du sous-menu
Texte.s = "Sous-Menu 111" ; Texte de l'élément
MenuInfo\dwTypeData = @Texte
MenuInfo\cch = Len(Texte) + 1
InsertMenuItem_(PopupMenu11, 1, #False, MenuInfo)
Texte.s = "Sous-Menu 112" ; Texte de l'élément
MenuInfo\wID = 112 ; ID du sous-menu
MenuInfo\dwTypeData = @Texte
MenuInfo\cch = Len(Texte) + 1
InsertMenuItem_(PopupMenu11, 2, #False, MenuInfo)
;******************************************
;******************************************
MenuInfo\fmask = $2 | $40
; On insert un élément dans le SystemMenu
MenuInfo\fType = #MFT_STRING
MenuInfo\fState = #MFS_DEFAULT
MenuInfo\wID = 21 ; ID du menu
Texte.s = "Menu 2" ; Texte de l'élément
MenuInfo\dwTypeData = @Texte
MenuInfo\cch = Len(Texte) + 1
InsertMenuItem_(SysMenu, 7, #MF_BYPOSITION, MenuInfo)
; Le 7 correspond à la position dans le menu
hmenupopup = CreatePopupMenu(10)
If hmenupopup
MenuItem(1, "Open")
MenuItem(2, "Save")
MenuItem(3, "Save as")
MenuItem(4, "Quit")
EndIf
InsertMenu_(SysMenu, 8, #MF_POPUP | #MF_BYPOSITION, hmenupopup, "menu 3")
SetWindowCallback(@WindowCallback())
Repeat
Event = WindowEvent()
Until Event = #WM_CLOSE