Accueil > Forum > > > > !! Avis aux boss des Api !!!!!!!
!! 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
Livres en rapport
|
Derniers Blogs
[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse chez eux, et l'avenir est très très prometteur pour le HTML5, notammen...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc
Forum
RE : VITESSERE : VITESSE par Renfield
Cliquez pour lire la suite par Renfield RE : VITESSERE : VITESSE par ucfoutu
Cliquez pour lire la suite par ucfoutu MACRO VBA EXCELMACRO VBA EXCEL par sigma17
Cliquez pour lire la suite par sigma17
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|