Fixer fenetre en premier plan par rapport aux autres

lazarird Messages postés 4 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 17 mai 2007 - 27 sept. 2005 à 19:25
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 27 sept. 2005 à 21:54
Bonjour,
je veux réaliser un programme dans lequel il y a deux form, et je veux que quand toutes les
deux sont à l'ecran la première est toujours au premier plan et je ne peux accéder à la
deuxième sans avoir fermé la première (comme si il s'agissait d'un message box)
j'ai essayé cette API mais elle ne semble pas marcher:
Public 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

Merci d'avance

4 réponses

Paladin2107 Messages postés 154 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 5 septembre 2008 1
27 sept. 2005 à 19:41
frm.show vbmodal

Couscous
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 sept. 2005 à 20:01
salut,
VbModal est la meilleur solution.
mais pour info, l'API que tu utilises est correcte et fonctionne. elle n'empêche cependant pas la prise en main d'autres fenêtres.


' -----
' Form1
' -----
Private Sub Command1_Click()
Form2.Show
End Sub

' -----
' Form2
' -----
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)

Private Sub Form_Activate()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Set the window position to topmost
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


PCPT
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
27 sept. 2005 à 20:01
Bonsoir,



Dans un Module:



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



'Dans la Form que tu veux garder au premier plan:



Private Sub Form_Load()

SetTopMostWindow Me.hwnd, True

End Sub



jpleroisse





Si une réponse vous convient, cliquez Réponse Acceptée.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
27 sept. 2005 à 21:54
Salut donc comme marquer plus haut tu as d'autres solutions, voici celle fournie par moi et pour VB.Net (comme VB6 à déjà été fournis)

frm.ShowDialog 'Pour le mode modal
frm.Show 'Pour le mode normal


Chris...
Web : Firstruner
0
Rejoignez-nous