Comment trouver la position d'un Form grace a son Hwnd ?

Résolu
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008
- 16 nov. 2005 à 21:34
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008
- 16 nov. 2005 à 23:44
Bonjour,

je souhaiterai trouver la position ( Top & Left ) d'un Form cree dynamiquement et dont je ne connais que le Hwnd.
quelqu'un a une idee ??

Merci

9 réponses

Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
16 nov. 2005 à 23:39
avec des Formes indicées t'aurait directement accès aux propriétés Left et Top.

par contre avec GetWindowRect, les positions sont par rapport à l'écran.









Dim frm(2) As Form



Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type



Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long



Private Sub MDIForm_Load()



Set frm(0) = New Form1

frm(0).Left = 0

frm(0).Top = 0

frm(0).Caption = "frm0"

frm(0).Show



Set frm(1) = New Form1

frm(1).Left = 0

frm(1).Top = 0

frm(1).Caption = "frm1"

frm(1).Show



End Sub



Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Dim n As Long

Dim rec As RECT



n = frm(0).Left + Me.Left + 90

MsgBox n / Screen.TwipsPerPixelX

n = frm(0).hwnd

GetWindowRect n, rec

MsgBox rec.Left



End Sub


Daniel
3
ShareVB
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
25
16 nov. 2005 à 22:21
salut,



l'api GetWindowPos me semble-t-il...

ShareVB
0
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008

16 nov. 2005 à 22:32
c'est bien ce qu'il me semblait mais je n'arrive pas a la feire marcher ...
0
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
16 nov. 2005 à 22:34
si tu connais son nom,

directement avec Left et Top









Dim Form2 As Form1



Set Form2 = New Form1

Form2.Caption = "Form2"

Form2.Left = 0

Form2.Top = 0

Form2.Show


Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008

16 nov. 2005 à 22:46
le fait est que la fenetre est deja ouverte et que je ne connais que son hwnd.
et je veux justement recuperer sont top et son left.
0
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
16 nov. 2005 à 22:48
c'est pas toi qui l'a crée alors !











Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type



Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long


Daniel
0
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008

16 nov. 2005 à 22:55
si mais dynamiquement avec un
j'ai une forme mdi parent avec une toolbar et quand je clik sur un boutton il m'ouvre une nouvelle fenetre frmC

avec Set frmC = New form1

et quand je ferme cette fenetre, je veux recuperer son top et son left pour les sauvegarder. Mais je ne connais que son Hwnd (que j'ai mis dans un tableau)
0
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008

16 nov. 2005 à 23:34
Nickel ca a l'air de fonctionner, mais une chose est bizare, quand je rappel ma fenetre avec ces donnee sauvegrde, elle ne se remet pas a la meme position.

est-ce que le fait que se soit une fenetre fille d'une MDI change quelque chose ?
0
looping_69
Messages postés
20
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
23 décembre 2008

16 nov. 2005 à 23:44
Merci Daniel c'est cool d'etre depane meme a des heures pareil ;o)
0