Popupmenu et perte de focus

Contenu du snippet

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 / Exemple :


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.