Au sujet des menus
Au sujet des menus
Bonjour à tous,
Comme vous le savez peut-être, PB donne des commandes sur les menus bien sympas et très utiles.
On commence par créer le titre du menu puis les menus avec un numéro pour chacun.
Mais il n'y a pas de numéro pour les titres de menu.
J'ai remarqué un programme qui n'avait pas de sous-menu mais seulement un titre de menu et on pouvait cliquer dessus et l'action demandé s'exécutait.
Comme faire pareil avec PB étant donné qu'il n'y a pas de numéro pour les menus.
Merci à ceux qui savent.
Comme vous le savez peut-être, PB donne des commandes sur les menus bien sympas et très utiles.
On commence par créer le titre du menu puis les menus avec un numéro pour chacun.
Mais il n'y a pas de numéro pour les titres de menu.
J'ai remarqué un programme qui n'avait pas de sous-menu mais seulement un titre de menu et on pouvait cliquer dessus et l'action demandé s'exécutait.
Comme faire pareil avec PB étant donné qu'il n'y a pas de numéro pour les menus.
Merci à ceux qui savent.
Re: Au sujet des menus
Avec Windows, on peut utiliser les messages avec un wincallback.
C'est compliqué mais je ne pense pas qu'il y ait plus simple.
Mesa.
C'est compliqué mais je ne pense pas qu'il y ait plus simple.
Code : Tout sélectionner
Procedure WinCallback(hwnd, message, wparam, lparam)
Select message
Case #WM_MENUSELECT
Numero_du_Menu = wparam & $ffff
Debug "Menu n° " + Str(Numero_du_Menu)
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 100, 100, 800, 600, "Menu", #PB_Window_SystemMenu)
Menu=CreateMenu(0, WindowID(0))
MenuTitle("Menu 0")
MenuItem(1, "Sous Menu 1")
MenuItem(2, "Sous Menu 2")
MenuItem(3, "Sous Menu 3")
MenuItem(100, "Sous Menu 100")
MenuTitle("Menu 1")
MenuTitle("Menu 2")
SetWindowCallback(@WinCallback())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Au sujet des menus
Amélioration du code.
Avec le code ci-dessus, avec des sous-menus, il faut appuyer une fois pour ouvrir le menu et une deuxième fois pour le refermer. Par contre sans sous-menus, c'est comme s'il ne se refermait jamais, ce qui rend le code inutilisable.
Maintenant les menus se ferment:
Il y a tout de même un bug quand on passe de menu0 directement à menu1, le menu1 se déclenche sans cliquer dessus.
Mesa.
Avec le code ci-dessus, avec des sous-menus, il faut appuyer une fois pour ouvrir le menu et une deuxième fois pour le refermer. Par contre sans sous-menus, c'est comme s'il ne se refermait jamais, ce qui rend le code inutilisable.
Maintenant les menus se ferment:
Code : Tout sélectionner
Procedure WinCallback(hwnd, message, wparam, lparam)
Select message
Case #WM_MENUSELECT
Numero_du_Menu = wparam & $ffff
;Debug "Menu n° " + Str(Numero_du_Menu)
Select Numero_du_Menu
Case 0
Debug "Menu n° " + Str(Numero_du_Menu)
Case 1
Debug "Menu n° " + Str(Numero_du_Menu)
EndMenu_()
Case 2
Debug "Menu n° " + Str(Numero_du_Menu)
EndMenu_()
EndSelect
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
hwin=OpenWindow(0, 100, 100, 800, 600, "Menu", #PB_Window_SystemMenu)
Menu=CreateMenu(0, WindowID(0))
MenuTitle("Menu 0")
MenuItem(10, "Sous Menu 10")
MenuItem(20, "Sous Menu 20")
MenuItem(30, "Sous Menu 30")
MenuItem(100, "Sous Menu 100")
MenuTitle("Menu 1")
MenuTitle("Menu 2")
SetWindowCallback(@WinCallback())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
;EndIf
Mesa.
Re: Au sujet des menus
Merci à tous.
Comme je ne suis pas chez moi je vais voir ça de plus près et d'avance je vous fais confiance.
Comme je ne suis pas chez moi je vais voir ça de plus près et d'avance je vous fais confiance.
Re: Au sujet des menus
J'ai regardé la SDK Documentation pour les APIs.
Effectivement, on récupère le mot bas de wParam et on a le handle du menu mais effectivement le titre du menu (menubar) se comporte exactement comme un sous-menu (submenu) et je ne vois pas quoi changer pour qu'il se comporte comme un menu.
Pourtant j'ai bien vu un programme avec un titre de menu, qui se comportait comme un menu, et qui renvoyait à une action particulière.
Ce qui veut dire que c'est possible mais comment faire pour que cela soit fait de manière correcte ?
Effectivement, on récupère le mot bas de wParam et on a le handle du menu mais effectivement le titre du menu (menubar) se comporte exactement comme un sous-menu (submenu) et je ne vois pas quoi changer pour qu'il se comporte comme un menu.
Pourtant j'ai bien vu un programme avec un titre de menu, qui se comportait comme un menu, et qui renvoyait à une action particulière.
Ce qui veut dire que c'est possible mais comment faire pour que cela soit fait de manière correcte ?
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Au sujet des menus
Peut etre ce code qui nous viens du grand SROD peut t'aiderJ'ai remarqué un programme qui n'avait pas de sous-menu mais seulement un titre de menu et on pouvait cliquer dessus et l'action demandé s'exécutait.

Code : Tout sélectionner
If OpenWindow(0, 200, 200, 400, 100, "MenuTitle Example")
If CreateMenu(0, WindowID(0))
MenuTitle("Project")
MenuItem(1, "Open")
MenuItem(2, "Close")
MenuTitle("&Edit")
MenuItem(3, "Undo")
MenuItem(4, "Redo")
CloseSubMenu()
MenuItem(5, "About")
EndIf
Repeat
ev = WaitWindowEvent()
Select ev
Case #PB_Event_Menu
If EventMenu() = 5
Debug "About clicked!"
EndIf
EndSelect
Until ev=#PB_Event_CloseWindow
EndIf
Re: Au sujet des menus
Ça alors, ça marche !
Comme le Code ci-dessus.
En plus c'est multiplateforme!
Mesa.


Comme le Code ci-dessus.
En plus c'est multiplateforme!
Code : Tout sélectionner
If OpenWindow(0, 200, 200, 400, 100, "MenuTitle Exemple")
If CreateMenu(0, WindowID(0))
MenuTitle("Menu 0")
MenuItem(10, "Sous Menu 10")
MenuItem(20, "Sous Menu 20")
MenuItem(30, "Sous Menu 30")
MenuItem(100, "Sous Menu 100")
CloseSubMenu()
MenuItem(1,"Menu 1")
MenuItem(2,"Menu 2")
EndIf
Repeat
ev = WaitWindowEvent()
Select ev
Case #PB_Event_Menu
Select EventMenu()
Case 0
Debug "Menu 0" ; ne marche pas mais ce n'est pas nécessaire
Case 1
Debug "Menu 1"
Case 2
Debug "Menu 2"
Case 10
Debug "Menu 10"
Case 20
Debug "Menu 20"
Case 30
Debug "Menu 30"
Case 100
Debug "Menu 100"
EndSelect
EndSelect
Until ev=#PB_Event_CloseWindow
EndIf
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Au sujet des menus
It's that, the magic SROD word



Re: Au sujet des menus
A Kwai chang caine.
Un grand merci à toi. Ton aide me sera très précieuse. Il fallait y penser.
Et pas besoin d'API, donc comme le dit mesa, c'est multiplateforme.
Un grand merci à toi. Ton aide me sera très précieuse. Il fallait y penser.
Et pas besoin d'API, donc comme le dit mesa, c'est multiplateforme.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Au sujet des menus
De rien content de t'avoir rendu service.
Mais tout le mérite reviens à SROD
C'est vrai que c'est tellement simple que ça en etait quasi impossible à trouver quand on connait pas la combine.
J'avais eu besoin de ça moi aussi au début de ma rencontre avec PB, et SROD m'avait drolement dépanné


Mais tout le mérite reviens à SROD

C'est vrai que c'est tellement simple que ça en etait quasi impossible à trouver quand on connait pas la combine.

J'avais eu besoin de ça moi aussi au début de ma rencontre avec PB, et SROD m'avait drolement dépanné


Re: Au sujet des menus
A Kwai chang caine.
Sans toi je n'aurais jamais su comment faire, donc merci à toi et aussi à SROD.
Sans toi je n'aurais jamais su comment faire, donc merci à toi et aussi à SROD.
Re: Au sujet des menus
C'est qui SROD 

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
Re: Au sujet des menus
Un membre du forum anglais.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Au sujet des menus
Ah ok, merci Ar'S 

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php