Mettre des Forms au premier plan

SirGus Messages postés 12 Date d'inscription samedi 6 octobre 2001 Statut Membre Dernière intervention 23 décembre 2002 - 20 févr. 2002 à 02:41
SirGus Messages postés 12 Date d'inscription samedi 6 octobre 2001 Statut Membre Dernière intervention 23 décembre 2002 - 20 févr. 2002 à 22:12
Bonjour,

Voilà, je vous explique mon problême:

J'ai une première form completement noir sans bordures qui prends tout le fond de l'écran et qui fait office de bureau en quelque sorte "frmBack". Par dessus cette form je veux afficher d'autres forms. J'ai réussi à mettre une seule form sur le dessus. Pour que ça fonctionne, j'ai du mettre ces deux lignes de code dans le "Form Load" de "frmBack":

frmBack.Show vbModal -1
frmMenu.Show vbModal

Cependant, je ne peux plus contrôler les autres form puisque "frmMenu" est modale... Si je désactive ces deux lignes de code, je me retrouve avec le fond noir en premier plan "frmBack" et l'on ne voit pas "frmMenu" puisqu'elle se trouve en dessous... S'il vous plait dites moi le s'il est possible de tout simplement mettre "frmBack" en dernier plane et toutes les autres forms sur le dessus...

Merci!

Un programmeur désespéré qui cherche depuis des heures...

4 réponses

cs_Troopers Messages postés 81 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 29 août 2003
20 févr. 2002 à 10:52
essaie d'utiliser l'api setwindowpos
0
Fipo Messages postés 9 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 24 octobre 2005
20 févr. 2002 à 17:22
Salut,

Si ça t'interesse j'ai longtemps cherché la solution et en fait il suffit de faire la chose suivante chaque fois que tu déinis une nouvelle form par rapport à frmBack.

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()
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub

a+
0
Fipo Messages postés 9 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 24 octobre 2005
20 févr. 2002 à 17:25
Salut,

Si ça t'interesse j'ai longtemps cherché la solution et en fait il suffit de faire la chose suivante chaque fois que tu déinis une nouvelle form par rapport à frmBack.

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()
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub

a+
0
SirGus Messages postés 12 Date d'inscription samedi 6 octobre 2001 Statut Membre Dernière intervention 23 décembre 2002
20 févr. 2002 à 22:12
J'ai trouvé bien plus simple que ça en faisant du essais et erreur hier soir pendant des heures et des heures ;) :

frmLaForm.Show 0, frmBack

Ça marche parfaitement! S'en est presque frustrant
0
Rejoignez-nous