OVH Cloud OVH Cloud

Raccourci sur Menu Contextuel par API

5 réponses
Avatar
Jérôme VERITE
Bonjour,

sauriez comment mettre en place un raccourci clavier (par exemple Ctrl+C)
sur un menu contextuel généré dynamiquement via les APIs?

Merci d'avance pour votre aide.

Jérôme

5 réponses

Avatar
ng
Salut,

Peut-on voir ton code de création du menu ?

Sinon il y a toujours moyen de le faire manuellement via KeyPress/KeyDown...

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le message
de news:
Bonjour,

sauriez comment mettre en place un raccourci clavier (par exemple Ctrl+C)
sur un menu contextuel généré dynamiquement via les APIs?

Merci d'avance pour votre aide.

Jérôme




Avatar
Jérôme VERITE
Merci pour la réponse, ce qui m'inporte dans l'ajout des raccourci, c'est en
fait leur affichage dans le menu.
Car il s'agit d'un menu contextuel d'une usercontrol, et ce sont les
raccourcis des menus de la fenetre les contenant qui sont
utilisés.

L'affichage de ceux-ci un peu partout permettant de ne pas les oublier et de
les mettre en avant même s'ils ne sont pas utilisés directement en tant que
raccourci au sein du usercontrol.

Je reformule donc ma question:

Comment faire semblant d'afficher des raccourcis clavier dans une menu
contextuel généré via les APIs? à savoir les "Ctrl+C"... présents à droite
du menu, et le tout aligné correctement.

Merci

Voici quand même l'exemple de code que j'utilise

Exemple de code utilisé

Private Function MenuContextuelCreation() As Long
Dim hMenu As Long

hMenu = CreatePopupMenu()

AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 1, "Editer..."
AppendMenu hMenu, MF_BYPOSITION + MF_SEPARATOR, 0, 0
AppendMenu hMenu, MF_BYPOSITION + MF_POPUP, FenetreMere.HMenuRegles,
"Ajouter une règle"
AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 2, "Créer une liste
indépendante"

SetMenuDefaultItem hMenu, 0, True
' on met l'icone correspondant aux listes
SetMenuItemBitmaps hMenu, 2, MF_BITMAP Or MF_BYPOSITION,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle
MenuContextuelCreation = hMenu
End Function

' dans une autre fonction

hMenu = MenuContextuelCreation()
Ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD, Pt.x,
Pt.y, Me.Hwnd, ByVal 0&)
If Ret <> 0 Then
'l'utilisateur a clické sur un item
Select Case Ret
Case GetMenuItemID(hMenu, 0)
EditerTable libelle1 & numero1, strListe
....
end select
end if

Jérôme

"ng" a écrit dans le message de
news:
Salut,

Peut-on voir ton code de création du menu ?

Sinon il y a toujours moyen de le faire manuellement via


KeyPress/KeyDown...

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le


message
de news:
> Bonjour,
>
> sauriez comment mettre en place un raccourci clavier (par exemple


Ctrl+C)
> sur un menu contextuel généré dynamiquement via les APIs?
>
> Merci d'avance pour votre aide.
>
> Jérôme
>
>




Avatar
Jérôme VERITE
Merci de me faire réfléchir, j'ai trouvé il suffit de mettre un petit vbtab
dans le libellé de l'item du menu correspondant

Libelle & vbtab & "Ctrl+C"

Jérôme

"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le message
de news:
Merci pour la réponse, ce qui m'inporte dans l'ajout des raccourci, c'est


en
fait leur affichage dans le menu.
Car il s'agit d'un menu contextuel d'une usercontrol, et ce sont les
raccourcis des menus de la fenetre les contenant qui sont
utilisés.

L'affichage de ceux-ci un peu partout permettant de ne pas les oublier et


de
les mettre en avant même s'ils ne sont pas utilisés directement en tant


que
raccourci au sein du usercontrol.

Je reformule donc ma question:

Comment faire semblant d'afficher des raccourcis clavier dans une menu
contextuel généré via les APIs? à savoir les "Ctrl+C"... présents à


droite
du menu, et le tout aligné correctement.

Merci

Voici quand même l'exemple de code que j'utilise

Exemple de code utilisé

Private Function MenuContextuelCreation() As Long
Dim hMenu As Long

hMenu = CreatePopupMenu()

AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 1, "Editer..."
AppendMenu hMenu, MF_BYPOSITION + MF_SEPARATOR, 0, 0
AppendMenu hMenu, MF_BYPOSITION + MF_POPUP, FenetreMere.HMenuRegles,
"Ajouter une règle"
AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 2, "Créer une liste
indépendante"

SetMenuDefaultItem hMenu, 0, True
' on met l'icone correspondant aux listes
SetMenuItemBitmaps hMenu, 2, MF_BITMAP Or MF_BYPOSITION,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle
MenuContextuelCreation = hMenu
End Function

' dans une autre fonction

hMenu = MenuContextuelCreation()
Ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD, Pt.x,
Pt.y, Me.Hwnd, ByVal 0&)
If Ret <> 0 Then
'l'utilisateur a clické sur un item
Select Case Ret
Case GetMenuItemID(hMenu, 0)
EditerTable libelle1 & numero1, strListe
....
end select
end if

Jérôme

"ng" a écrit dans le message de
news:
> Salut,
>
> Peut-on voir ton code de création du menu ?
>
> Sinon il y a toujours moyen de le faire manuellement via
KeyPress/KeyDown...
>
> --
> Nicolas G.
> FAQ VB : http://faq.vb.free.fr
> API Guide : http://www.allapi.net
> Google Groups : http://groups.google.fr/
> MZ-Tools : http://www.mztools.com/
>
>
> "Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le
message
> de news:
> > Bonjour,
> >
> > sauriez comment mettre en place un raccourci clavier (par exemple
Ctrl+C)
> > sur un menu contextuel généré dynamiquement via les APIs?
> >
> > Merci d'avance pour votre aide.
> >
> > Jérôme
> >
> >
>
>




Avatar
ng
Salut,

Essaye ceci :

Const MF_CHECKED = &H8&
Const MF_APPEND = &H100&
Const TPM_LEFTALIGN = &H0&
Const MF_DISABLED = &H2&
Const MF_GRAYED = &H1&
Const MF_SEPARATOR = &H800&
Const MF_STRING = &H0&
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long,
ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As
Long, ByVal hwnd As Long, ByVal lprc As Any) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long,
ByVal bRevert As Long) As Long
Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal
hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal
lpNewItem As Any) As Long
Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As
Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As
Long
Dim hMenu As Long
Private Sub Form_Load()
hMenu = CreatePopupMenu()
AppendMenu hMenu, MF_STRING, ByVal 0&, "Menu 1" & vbTab & "Ctrl + C"
AppendMenu hMenu, MF_STRING, ByVal 0&, "Menu 2" & vbTab & "Ctrl + V"
AppendMenu hMenu, MF_STRING, ByVal 0&, "Menu 3" & vbTab & "Ctrl + L"
AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ""
AppendMenu hMenu, MF_STRING, ByVal 0&, "Court" & vbTab & "Ctrl + L"
AppendMenu hMenu, MF_STRING, ByVal 0&, "Caption très très très très longue
;-) !!!" & vbTab & "Ctrl + L"
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y
As Single)
Dim Pt As POINTAPI
GetCursorPos Pt
If Button = 1 Then
TrackPopupMenu hMenu, TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0&
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
DestroyMenu hMenu
End Sub

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le message
de news:
Merci pour la réponse, ce qui m'inporte dans l'ajout des raccourci, c'est


en
fait leur affichage dans le menu.
Car il s'agit d'un menu contextuel d'une usercontrol, et ce sont les
raccourcis des menus de la fenetre les contenant qui sont
utilisés.

L'affichage de ceux-ci un peu partout permettant de ne pas les oublier et


de
les mettre en avant même s'ils ne sont pas utilisés directement en tant


que
raccourci au sein du usercontrol.

Je reformule donc ma question:

Comment faire semblant d'afficher des raccourcis clavier dans une menu
contextuel généré via les APIs? à savoir les "Ctrl+C"... présents à


droite
du menu, et le tout aligné correctement.

Merci

Voici quand même l'exemple de code que j'utilise

Exemple de code utilisé

Private Function MenuContextuelCreation() As Long
Dim hMenu As Long

hMenu = CreatePopupMenu()

AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 1, "Editer..."
AppendMenu hMenu, MF_BYPOSITION + MF_SEPARATOR, 0, 0
AppendMenu hMenu, MF_BYPOSITION + MF_POPUP, FenetreMere.HMenuRegles,
"Ajouter une règle"
AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 2, "Créer une liste
indépendante"

SetMenuDefaultItem hMenu, 0, True
' on met l'icone correspondant aux listes
SetMenuItemBitmaps hMenu, 2, MF_BITMAP Or MF_BYPOSITION,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle,
FenetreMere.ImageListe.ListImages("Regle").Picture.Handle
MenuContextuelCreation = hMenu
End Function

' dans une autre fonction

hMenu = MenuContextuelCreation()
Ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD, Pt.x,
Pt.y, Me.Hwnd, ByVal 0&)
If Ret <> 0 Then
'l'utilisateur a clické sur un item
Select Case Ret
Case GetMenuItemID(hMenu, 0)
EditerTable libelle1 & numero1, strListe
....
end select
end if

Jérôme

"ng" a écrit dans le message de
news:
> Salut,
>
> Peut-on voir ton code de création du menu ?
>
> Sinon il y a toujours moyen de le faire manuellement via
KeyPress/KeyDown...
>
> --
> Nicolas G.
> FAQ VB : http://faq.vb.free.fr
> API Guide : http://www.allapi.net
> Google Groups : http://groups.google.fr/
> MZ-Tools : http://www.mztools.com/
>
>
> "Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le
message
> de news:
> > Bonjour,
> >
> > sauriez comment mettre en place un raccourci clavier (par exemple
Ctrl+C)
> > sur un menu contextuel généré dynamiquement via les APIs?
> >
> > Merci d'avance pour votre aide.
> >
> > Jérôme
> >
> >
>
>




Avatar
ng
Oui en effet ! j'ai posté ma dernière réponse sans actualiser ;)

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le message
de news:
Merci de me faire réfléchir, j'ai trouvé il suffit de mettre un petit


vbtab
dans le libellé de l'item du menu correspondant

Libelle & vbtab & "Ctrl+C"

Jérôme

"Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le


message
de news:
> Merci pour la réponse, ce qui m'inporte dans l'ajout des raccourci,


c'est
en
> fait leur affichage dans le menu.
> Car il s'agit d'un menu contextuel d'une usercontrol, et ce sont les
> raccourcis des menus de la fenetre les contenant qui sont
> utilisés.
>
> L'affichage de ceux-ci un peu partout permettant de ne pas les oublier


et
de
> les mettre en avant même s'ils ne sont pas utilisés directement en tant
que
> raccourci au sein du usercontrol.
>
> Je reformule donc ma question:
>
> Comment faire semblant d'afficher des raccourcis clavier dans une


menu
> contextuel généré via les APIs? à savoir les "Ctrl+C"... présents à
droite
> du menu, et le tout aligné correctement.
>
> Merci
>
> Voici quand même l'exemple de code que j'utilise
>
> Exemple de code utilisé
>
> Private Function MenuContextuelCreation() As Long
> Dim hMenu As Long
>
> hMenu = CreatePopupMenu()
>
> AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 1, "Editer..."
> AppendMenu hMenu, MF_BYPOSITION + MF_SEPARATOR, 0, 0
> AppendMenu hMenu, MF_BYPOSITION + MF_POPUP, FenetreMere.HMenuRegles,
> "Ajouter une règle"
> AppendMenu hMenu, MF_BYPOSITION + MF_STRING, 2, "Créer une liste
> indépendante"
>
> SetMenuDefaultItem hMenu, 0, True
> ' on met l'icone correspondant aux listes
> SetMenuItemBitmaps hMenu, 2, MF_BITMAP Or MF_BYPOSITION,
> FenetreMere.ImageListe.ListImages("Regle").Picture.Handle,
> FenetreMere.ImageListe.ListImages("Regle").Picture.Handle
> MenuContextuelCreation = hMenu
> End Function
>
> ' dans une autre fonction
>
> hMenu = MenuContextuelCreation()
> Ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD, Pt.x,
> Pt.y, Me.Hwnd, ByVal 0&)
> If Ret <> 0 Then
> 'l'utilisateur a clické sur un item
> Select Case Ret
> Case GetMenuItemID(hMenu, 0)
> EditerTable libelle1 & numero1, strListe
> ....
> end select
> end if
>
> Jérôme
>
> "ng" a écrit dans le message de
> news:
> > Salut,
> >
> > Peut-on voir ton code de création du menu ?
> >
> > Sinon il y a toujours moyen de le faire manuellement via
> KeyPress/KeyDown...
> >
> > --
> > Nicolas G.
> > FAQ VB : http://faq.vb.free.fr
> > API Guide : http://www.allapi.net
> > Google Groups : http://groups.google.fr/
> > MZ-Tools : http://www.mztools.com/
> >
> >
> > "Jérôme VERITE" <veritejeromeAROBASEwanadooPOINTfr> a écrit dans le
> message
> > de news:
> > > Bonjour,
> > >
> > > sauriez comment mettre en place un raccourci clavier (par exemple
> Ctrl+C)
> > > sur un menu contextuel généré dynamiquement via les APIs?
> > >
> > > Merci d'avance pour votre aide.
> > >
> > > Jérôme
> > >
> > >
> >
> >
>
>