Donner à une form le premier plan et le focus, d'être séléctioné ! ! !

Contenu du snippet

Donner à une Form la possibilité d'être en premier plan et d'avoir LE FOCUS, d'être séléctioné ! ! !

voir un problème que j'avais là :
http://www.vbfrance.com/forum/sujet-COMMENT-FAIRE-GLISSER-FORM-VENANT-BORDDE-ECRAN_1605687.aspx

Source / Exemple :


'--------------------------  la souris --------------------------
Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, _
        ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, _
        ByVal dwExtraInfo As Long)
        ' ---Définition des constantes---
Public Const MOUSEEVENTF_ABSOLUTE = &H8000
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_MIDDLEDO = &H20
Public Const MOUSEEVENTF_MIDDLEUP = &H40
Public Const MOUSEEVENTF_MOVE = &H1
Public Const MOUSEEVENTF_RIGHTDOWN = &H8
Public Const MOUSEEVENTF_RIGHTUP = &H10

Public Sub Premier_plan(la_form As Object, Optional ByVal active As Boolean = True, Optional ByVal Clic_mouse_pour_avoir_le_focus As Boolean = False)
'force l'affichage au dessus des autres fenetres, bien sûr
'Clic_mouse_pour_avoir_le_focus=true permet de forcer le FOCUS ! ! ! !

la_form.Show

If active = True Then
 SetWindowPos la_form.hWnd, -1, 0, 0, 0, 0, &H2 Or &H1
Else
 SetWindowPos la_form.hWnd, -2, 0, 0, 0, 0, &H2 Or &H1
End If

If Clic_mouse_pour_avoir_le_focus = True Then
 X% = (la_form.Left + la_form.Width / 2) / Screen.TwipsPerPixelX
 Y% = ((la_form.Top + la_form.Height) / Screen.TwipsPerPixelX) - 4
 SetCursorPos X%, Y%
 Call mouse_event(MOUSEEVENTF_LEFTDOWN, X%, Y%, 0, 0) 'on enfonce le bouton
 Call mouse_event(MOUSEEVENTF_LEFTUP, X%, Y%, 0, 0) 'on relache le bouton
End If

End Sub

Conclusion :


pour le FOCUS c'est plus une astuce d'utiliser le clic souris, mais j'ai rien trouver d'autre, si quelqu'un à mieux ne pas hésiter, cela serais plus propre !

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.