begin process at 2010 03 22 14:40:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

API

 > 

!! Avis aux boss des Api !!!!!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

!! Avis aux boss des Api !!!!!!!

mardi 31 juillet 2001 à 21:49:55 | !! Avis aux boss des Api !!!!!!!

schouly

Comment capter le click de la souris sur un bouton dans un popupmenu créé par : CreatePopupMenu, TrackPopupMenu, AppendMenu

Merci

Schouly





ex : (allapi.net)

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&, "Hello !"
AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, ByVal 0&, "Testing ..."
AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ByVal 0&
AppendMenu hMenu, MF_CHECKED, ByVal 0&, "TrackPopupMenu"
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&
Else
TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0&
End If
End Sub



mercredi 1 août 2001 à 01:06:36 | Re : !! Avis aux boss des Api !!!!!!!

Makabey

Je sais pas si c'est la bonne façon, mais j'ai consulté leur outils (il en manque des choses pour AppendMenu!) et j'arrive à ceci qui est stable même en dehors de VB (NON! Je suis pas un god des API, juste un bidouilleur):


Option Explicit

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&
Const TPM_RETURNCMD = &H100& ' <-- AJOUTÉ

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, 1, "Hello !" ' <-- J'ai mis un numéro aux items pouvant réagir
AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, 2, "Testing ..."
AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ByVal 0& ' <-- Un séparateur ne peux pas réagir
AppendMenu hMenu, MF_CHECKED, 4, "TrackPopupMenu" ' <-- Personnellement, je met 4, pcq c'est effectivement le 4ème item
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Pt As POINTAPI
Dim ItemRetour As Long

GetCursorPos Pt
If Button = 1 Then
ItemRetour = TrackPopupMenu(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0&) ' <-- Modifié
'Debug.Print "Item #" & ItemRetour ' <-- Ajouté
Me.Caption = "Item #" & ItemRetour ' <-- Ajouté

' Il resterait à mettre un Select Case appellant
' une fonction selon la valeur de ItemRetour.
Else
TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0& ' <-- Utile niveau académique mais pas pratique.
End If
End Sub

'Tu avais oublié ceci, pour ceux qui lisent c'est important:
Private Sub Form_Unload(Cancel As Integer)
'Destroy our menu
DestroyMenu hMenu
End Sub




-------------------------------
Réponse au message :
-------------------------------

Comment capter le click de la souris sur un bouton dans un popupmenu créé par : CreatePopupMenu, TrackPopupMenu, AppendMenu

Merci

Schouly





ex : (allapi.net)

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&, "Hello !"
AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, ByVal 0&, "Testing ..."
AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ByVal 0&
AppendMenu hMenu, MF_CHECKED, ByVal 0&, "TrackPopupMenu"
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&
Else
TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0&
End If
End Sub




mercredi 1 août 2001 à 10:51:06 | Re : !! Avis aux boss des Api !!!!!!!

schouly

Merci bcp ...


Pourquoi est-ce important de détruire le menu en sortant ? ... (pour libérer la mémoire ?)


Schouly


jeudi 2 août 2001 à 00:46:49 | Re : !! Avis aux boss des Api !!!!!!!

Makabey

J'ai aucune idée des circonstances exactes où ça planterais, mais comme on crée qqch avec les API, bah faut les retirer pour pas justement que ça plante. P-ê aussi pour éviter que devienne des ressources non libérées à la sortie de l'App. (memory leak)



-------------------------------
Réponse au message :
-------------------------------

Merci bcp ...


Pourquoi est-ce important de détruire le menu en sortant ? ... (pour libérer la mémoire ?)


Schouly





Cette discussion est classée dans : long, private, const, mf, hmenu


Répondre à ce message

Sujets en rapport avec ce message

Service NT [ par ricopetitdejeuner ] Bonjour a tous!J'ai une pitite question sur les service NT. J'arrive bien a creer mon service, mais lorsque je veux le lancer, il n'y arrive pas (aucu api pour showintaskbar [ par Stephane ] salut a tousj'ai un probleme, il me faudrai savoir comment enlever un rectangle(dont je connai le hwnd) dans la barre des taches a partir d'un hwnd, e je arrive pas a mettre mes icons dans mon menu [ par laulaut ] voila le code que j'ai mais il a pas de icon devant je comprend pasOption ExplicitPrivate Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) A ScrollBar [ par MickeyCohen ] J'ai ce bout de code :Private Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) As LongPrivate voivi un script pour désactiver le bouton fermer d'access [ par antipateik ] j'ai récupéré ce script sur le super site de http://access.seneque.free.fr/Mon pb c'est que j'y pige pas grand chose set que j'aimerai savoir comment Prob ScrollBars I NEED HELP [ par Titant ] Salut,Lorceque je veux changer le scrollbar à l'aide d'un bouton genre:Text1.ScrollBars = 2Ben il me sort un mess d'erreur genre:Impossible d'affecter pivoter acquisition image [ par joe321 ] Salut, J'utilise la procedure suivante pour recuper le signal video de ma carte TV <span class Enregistrement d'une dll sur windows xp avec un compte utilisateur n'ayant pas de droit [ par vaneri2004 ] Bonjour tout le monde,Je me creuse la tête depuis quelques temps pour trouver le moyen d'enregistrer une dll sur un chti Windows Xp avec un compte uti Modifications d'un ComboBox [ par perathoner ] <IMG title=Message height=9 alt=Message src="http://www.developpez.be/forums/templat Api - BackColor (experts) [ par davidauche ] Bah après une galère pour détecter le message WM_CTLCOLORSTATIC (avec une méthode conne mais ça marche :) ).  Maintenant je me trouve devant une autre


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,385 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales