begin process at 2012 02 13 08:18:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > POPUPMENU ET PERTE DE FOCUS

POPUPMENU ET PERTE DE FOCUS


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Niveau :Initié Date de création :12/09/2004 Date de mise à jour :12/09/2004 10:45:51 Vu :4 345

Auteur : tcari

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Voilà, j'aime bien faire des applications qui se lancent depuis la barre des tâches.
Mais dès que je fais un popupmenu (on fait un clique droit sur l'icône de la barre des taches et un menu apparait), celui ci refuse de se désactiver si je coche ailleurs dans l'écran.

J'ai cherché ici, mais je n'ai rien trouvé qui corrige ce bug.

Je suis donc allé pêcher ce code sur un autre site, et vu que ca m'a été super utile, je vous le livre de ce pas.

A prioris, il faut donc passer le prog qui est dormant dans la barre des tâches au premier plan, pour qu'il puisse détecter la perte de focus et donc quitter le popupmenu si on clique ailleurs dans la fenêtre ==> donc "SetForegroundWindow Me.hwnd"

Source

  • private Const DOUBLE_CLICK_GAUCHE = &H203
  • private Const BOUTON_GAUCHE_POUSSE = &H201
  • private Const BOUTON_GAUCHE_LEVE = &H202
  • private Const DOUBLE_CLICK_DROIT = &H206
  • private Const BOUTON_DROIT_POUSSE = &H204
  • private Const BOUTON_DROIT_LEVE = &H205
  • Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  • Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Dim Msg as long
  • Msg = X / Screen.TwipsPerPixelX
  • If Me.WindowState = vbMinimized then
  • Select Case Msg
  • Case BOUTON_DROIT_POUSSE 'on appuie sur le bouton droit
  • SetForegroundWindow Me.hwnd
  • Popupmenu Me.menu
  • end select
  • end if
  • end sub
private Const DOUBLE_CLICK_GAUCHE = &H203
private Const BOUTON_GAUCHE_POUSSE = &H201
private Const BOUTON_GAUCHE_LEVE = &H202
private Const DOUBLE_CLICK_DROIT = &H206
private Const BOUTON_DROIT_POUSSE = &H204
private Const BOUTON_DROIT_LEVE = &H205
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim Msg as long
        Msg = X / Screen.TwipsPerPixelX
        If Me.WindowState = vbMinimized then
            Select Case Msg
                Case BOUTON_DROIT_POUSSE 'on appuie sur le bouton droit
                       SetForegroundWindow Me.hwnd
                       Popupmenu Me.menu
            end select
        end if
end sub




 Historique

12 septembre 2004 08:36:50 :
Mise à jour du titre !
12 septembre 2004 10:45:51 :
Petits oublis.. Eh oui.. j'avais fait un mic mac entre l'endroit d'où j'ai tiré ce code et l'appli que je suis en train de développer.. D'où certaines incohérences. Lol ...

 Sources du même auteur

Source avec Zip Source avec une capture METTRE UNE LISTE DÉROULANTE DANS UN LISTVIEW

 Sources de la même categorie

Source avec Zip CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes
Source avec Zip Source avec une capture UN PATCH EN VB (V3) par PhoenixBytes
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture MULTITHREADING ACTIVEX par Philippe734

Commentaires et avis

Commentaire de yoyo269 le 12/09/2004 09:34:23

Merci beaucoup tcari,

c'est exactement se que je cherchais depuis longtemps.
Par contre je pense que tu as dû oublier qq chose pour fixer la valeur lngMsg avec un truc dans le genre :

lngMsg = X / Screen.TwipsPerPixelX

Et de plus il a fallu que je déclare la fonction SetForeGround en Private parce que ça passait pas en public, mais bon on se débrouille facilement avec ça.

Donc je te mets 8 et pas 10 parce que c'est une source qui n'est pas de toi et pour le petit oubli d'affectation à la variable.

YOYO, @+.

Commentaire de bilaloch le 12/09/2004 10:12:51

Tres bonne source. 9/10.

@ ++

Commentaire de tcari le 12/09/2004 10:50:00

Voilà, c'est corrigé.. Du moins j'espère.. J'étais pas bien réveillé ce matin (un dimanche matin à 8h30 ! faut être fou pour poster du code ici !)

Commentaire de KaViDee le 12/09/2004 11:22:04

Cool, moi aussi j'en avais justement besoin :)
merci
++

Commentaire de Jielde le 24/02/2005 01:27:15

Merci énormément, c'était un truc que je cherche depuis très longtemps, le trouvé enfin c'est super sa mérite bien une petite note sa

Commentaire de RemyFR le 09/09/2005 08:53:10

Super !!!!!

je cherchais depuis un petit moment.

Dans mon cad j'ai juste fais ceci :

# private Const DOUBLE_CLICK_GAUCHE = &H203
# private Const BOUTON_GAUCHE_POUSSE = &H201
# private Const BOUTON_GAUCHE_LEVE = &H202
# private Const DOUBLE_CLICK_DROIT = &H206
# private Const BOUTON_DROIT_POUSSE = &H204
# private Const BOUTON_DROIT_LEVE = &H205
# Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
#  

#Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
#Static rec As Boolean, msg As Long

#msg = X / Screen.TwipsPerPixelX
#If rec = False Then
#    rec = True
#    Select Case msg
#        Case DOUBLE_CLICK_GAUCHE:
#            Quit_Click
#        Case BOUTON_DROIT_LEVE:
#            PopupMenu Menu
#    End Select
#    rec = False
#End If

#SetForegroundWindow Me.hwnd

#End Sub


Commentaire de clret le 08/02/2007 16:45:33

un simple petit merci de plus...
je cherchais cette fonction depuis plusieurs jours...

Commentaire de aieeeuuuuu le 31/01/2008 10:35:49 9/10

Merci beaucoup
J'ai eu un peu de mal également a trouver la solution.
pourtant, ça n'est pas le nombre de sources sur ce site pour afficher un popupmenu qui manquent...
mais très peu indiquent comment faire pour l'effacer si on ne clique pas dessus.
et une solution efficace qui tiens en 2 lignes en plus :)

merci encore

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,562 sec (4)

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