Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer un menu de façon dynamique ?

4 réponses
Avatar
Bernardo
Bonjour,

Est-il possible de créer un menu de façon dynamique en VB6 ?
Si oui, comment ?
Merci.

4 réponses

Avatar
Bernardo
> Bonjour,

Est-il possible de créer un menu de façon dynamique en VB6 ?
Si oui, comment ?
Merci.



J'ai trouvé sur le web

http://www.mentalis.org/apilist/TrackPopupMenu.shtml
Avatar
bayosky
Dans le message ,
Bernardo a écrit :
Bonjour,

Est-il possible de créer un menu de façon dynamique en VB6 ?
Si oui, comment ?



Bonsoir,

La réponse est ... bien sûr
et même ...
Quand on a le gout des choses héroïques,
on peut même partir d'un Form vierge
et construire les différents éléments
" à la main "
par le code ...

HB
Avatar
Bernardo
> Dans le message ,
Bernardo a écrit :
Bonjour,

Est-il possible de créer un menu de façon dynamique en VB6 ?
Si oui, comment ?



Bonsoir,

La réponse est ... bien sûr
et même ...
Quand on a le gout des choses héroïques,
on peut même partir d'un Form vierge
et construire les différents éléments
" à la main "
par le code ...

HB



Et comment STP ?
Avatar
Alain CROS
Bonjour,

1 menu dans une Msgbox.

Private Declare Function CreateMenu& _
Lib "user32" _
()

Private Declare Function SetWindowsHookEx& _
Lib "user32" Alias "SetWindowsHookExA" _
(ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)

Private Declare Function GetCurrentThreadId& _
Lib "kernel32" _
()

Private Declare Function UnhookWindowsHookEx& _
Lib "user32" _
(ByVal hHook&)

Private Declare Function ShowWindow& _
Lib "user32" _
(ByVal hWnd&, ByVal nCmdShow&)

Private Declare Function GetDlgItem& _
Lib "user32" _
(ByVal hDlg&, ByVal nIDDlgItem&)

Private Declare Function MoveWindow& _
Lib "user32" _
(ByVal hWnd&, ByVal x&, ByVal y&, ByVal nWidth&, ByVal nHeight&, ByVal bRepaint&)

Private Declare Function InsertMenuItem& _
Lib "user32" Alias "InsertMenuItemA" _
(ByVal hMenu&, ByVal un&, ByVal bool&, lpcMenuItemInfo As MENUITEMINFO)

Private Declare Function SetWindowLong& _
Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

Private Declare Function PostMessage& _
Lib "user32" Alias "PostMessageA" _
(ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)

Private Declare Function CallWindowProc& _
Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc&, ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)

Private Declare Function SetMenu& _
Lib "user32" _
(ByVal hWnd&, ByVal hMenu&)

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Private LeHook&, OldWinProc&, Lemsg$

Sub main()
Const WH_CBT& = &H5
LeHook = SetWindowsHookEx(WH_CBT, AddressOf HookMsgb, 0&, GetCurrentThreadId)
Lemsg = "Utilisation de CreateMenu"
MsgBox ""
End Sub

Private Function HookMsgb&(ByVal lMsg&, ByVal wParam&, ByRef lParam&)
Const HCBT_ACTIVATE& = 5&, MF_STRING& = &H0, GWL_WNDPROC& = -4&, _
MIIM_TYPE& = &H10, MIIM_ID& = &H2, SW_HIDE& = 0&
Dim MnuItem As MENUITEMINFO, hMenu&
If lMsg = HCBT_ACTIVATE Then
UnhookWindowsHookEx LeHook
ShowWindow GetDlgItem(wParam, 1&), SW_HIDE
MoveWindow wParam, 100&, 100&, 400&, 300&, True
hMenu = CreateMenu()
With MnuItem
.cbSize = Len(MnuItem)
.fMask = MIIM_TYPE Or MIIM_ID
.fType = MF_STRING
.wID = 110&
.dwTypeData = "Menu A"
InsertMenuItem hMenu, 0&, True, MnuItem
.wID = 111&
.dwTypeData = "Menu B"
InsertMenuItem hMenu, 1&, True, MnuItem
.wID = 112&
.dwTypeData = "Quitter"
InsertMenuItem hMenu, 2&, True, MnuItem
End With
SetMenu wParam, hMenu
OldWinProc = SetWindowLong(wParam, GWL_WNDPROC, AddressOf MsgbProc)
End If
HookMsgb = False
End Function

Private Function MsgbProc&(ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)
Const GWL_WNDPROC& = -4&, WM_CLOSE& = &H10, WM_COMMAND& = &H111
Select Case Msg
Case Is = WM_COMMAND
If lParam = 0& Then
Select Case wParam
Case Is = 110&
MsgBox "Vous avez choisi le Menu A", vbInformation, Lemsg
Case Is = 111&
MsgBox "Vous avez choisi le Menu B", vbInformation, Lemsg
Case Is = 112&
PostMessage hWnd, WM_CLOSE, 0&, 0&
End Select
End If
Case Is = WM_CLOSE
SetWindowLong hWnd, GWL_WNDPROC, OldWinProc
End Select
MsgbProc = CallWindowProc(OldWinProc, hWnd, Msg, wParam, lParam)
End Function

Alain CROS

"Bernardo" a écrit dans le message de news:
| > Dans le message ,
| > Bernardo a écrit :
| >> Bonjour,
| >>
| >> Est-il possible de créer un menu de façon dynamique en VB6 ?
| >> Si oui, comment ?
| >
| > Bonsoir,
| >
| > La réponse est ... bien sûr
| > et même ...
| > Quand on a le gout des choses héroïques,
| > on peut même partir d'un Form vierge
| > et construire les différents éléments
| > " à la main "
| > par le code ...
| >
| > HB
|
| Et comment STP ?
|
|