Comment avoir une fenêtre en 1er plan

Minikisscool Messages postés 112 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 1 avril 2008 - 20 juil. 2004 à 11:55
Minikisscool Messages postés 112 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 1 avril 2008 - 20 juil. 2004 à 13:52
Bonjour,

j'ai un programme avec une fenêtre principale dans laquelle par exemple j'ai un sstab.

j'ai une fenêtre debug, que je lance par un menu.

Ce que je souhaite c'est avoir ma fenêtre principale, travailler dessus, avec le sstab par exemple, et avoir par dessus la fenêtre debug.

En résumé je voudrais que la debug.frm soit toujours en 1er plan quoique je fasse sur la principale.frm

actuellement le problème est que lorsque je travaille sur principale.frm, debug.frm ne reste pas en 1er plan
Je dois recliquer dessus dans la barre des tâches

Merci d'avance

3 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
20 juil. 2004 à 13:12
Colle ce code dans un module ...
Option Explicit

'
' OBJET :
'   Force une fenêtre à rester au-dessus de toute autre fenêtre, même si elle perd le focus.
' UTILISATION :
'   Appeler SetTopMostWindow en indiquant dans le 1er argument le Handle de la fenêtre à passer au 1er plan
'   (Utiliser la propriété Form.HWnd) et en second argument la valeur booléenne True
'   Pour annuler cette mise au 1er plan, refaire le même appel avec False en second argument

Public Const SWP_NOMOVE = 2
Public Const SWP_NOSIZE = 1
Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) As Long
    If Topmost = True Then
        SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
        SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
        SetTopMostWindow = False
    End If
End Function

... et suit les instruction du commentaire en haut du module.

Christophe R.
0
Minikisscool Messages postés 112 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 1 avril 2008 1
20 juil. 2004 à 13:51
Alors j'ai essayé et c'est parfait

j'ai crée le module, et dans la fenêtre que je souhaite laisser au 1er plan j'ai mis ça :

Private Sub Form_Load()
SetTopMostWindow Me.hwnd, True
End Sub

c'est extrait d'in post auquel tu avais répondu à la même question que moi
http://www.vbfrance.com/forum.v2.aspx?ID=79351

encore merci
0
Minikisscool Messages postés 112 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 1 avril 2008 1
20 juil. 2004 à 13:52
Alors j'ai essayé et c'est parfait

j'ai crée le module, et dans la fenêtre que je souhaite laisser au 1er plan j'ai mis ça :

Private Sub Form_Load()
SetTopMostWindow Me.hwnd, True
End Sub

c'est extrait d'in post auquel tu avais répondu à la même question que moi
http://www.vbfrance.com/forum.v2.aspx?ID=79351

encore merci
0
Rejoignez-nous