Deplacer 2 form ensemble / deplacer picture1 de form1 a form2

ORTIPIC Messages postés 41 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 16 juillet 2007 - 25 août 2005 à 00:08
ORTIPIC Messages postés 41 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 16 juillet 2007 - 25 août 2005 à 22:05
Salut a tous

si quelqu un peut me dire sous vb6

comment :

deplace t on deux ( form1 et form2 ) en meme temps

et comment :

deplacer un object picture1 sur form1 vers la form2

merci j ai pourtant cherché mais .................
A voir également:

8 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 août 2005 à 00:59
mouvement de la Form1 entraine mouvement de la Form2
faudrait faire la même chose pour la Form2, je sais pas si c'est possible.
pour mettre le Picture1 dans la Form2 faut utiliser SetParent

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

dans la Form1

Private Sub Form_Load()
'Remplace la procédure de fenêtre par défaut par notre propre procédure
oldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Remet la procédure de fenêtre par défaut
SetWindowLong hwnd, GWL_WNDPROC, oldWndProc
End Sub





dans un module
Public Const GWL_WNDPROC = (-4)
Private Const WM_MOVE = &H3
Public oldWndProc As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

If msg = WM_MOVE Then
'la form1 a été déplacée
Form1.Cls
Form1.Print "Nouvelle position : " & Form1.Left & ", " & Form1.Top
Form2.Move Form1.left + Form1.Width, Form1.Top
End If

'Appelle la procédure de fenêtre par défaut pour que Windows puisse traiter l'évènement
WindowProc = CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam)

End Function





Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 août 2005 à 06:09
Juste une petite précision sur le code de Daniel : cela s'appelle un
Hook, c'est-à-dire qu'on utilise une fonction WindowProc personnelle
avant d'exécuter celle de windows par défaut.



VB n'aime pas du tout ce genre de manipulation et ca le rend instable
si on quitte le prog par le bouton Stop de l'IDE, donc à utiliser avec
modération : bien rétablir la fonction WindowProc par défaut à la
fermeture du prog, et ne pas quitter le prog par un "Stop" ou un appel
à End si tu ne veux pas relancer VB à chaque éxécution !



N.B. : Ca marche parfaitement en mode compilé cependant.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
ORTIPIC Messages postés 41 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 16 juillet 2007
25 août 2005 à 09:44
merci .... Gobillot
merci ... Darsidious

je vais tester cette methode merci
......... j avais utilisé l api SetTimer et KillTimer pour autre chose , mais le probleme de plantage de ID VB est bien lourd ,certainement comme le hook de Gobillot
-----------------------------------

il reste la question du deplacement d objet ...... j attend une bonne idee

DUR DUR D ETRE UN VB merci merci
0
gilmerl Messages postés 30 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 2 mai 2007
25 août 2005 à 18:28
slt
j'cprend pas exactement ton message mais
pour deplacer un picture de la form1 ver la form2, suffit juste d'écrire peut être dans le form_load de la form2: (nom du picture sur la form2)=form1.(nompicture dela form 1
............bonne chance
0

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

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 août 2005 à 19:03
comme je t'ai dis:

Form2.Show

SetParent Picture1.hwnd, Form2.hwnd


Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 août 2005 à 19:29
passage en douceur de la PictureBox de la Form1 à la Form2 à travers tout l'écran.









Dim px As Long

Dim py As Long

Dim x1 As Long

Dim y1 As Long

Dim x2 As Long

Dim y2 As Long



Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Declare Function GetDesktopWindow Lib "user32" () As Long



Private Sub Form_Load()

Form2.Show

px = Picture1.Left

py = Picture1.Top

End Sub



Private Sub Command1_Click()

Dim R As Long



R = GetDesktopWindow

x1 = px + Form1.Left + 60

y1 = py + Form1.Top + 450

x2 = px + Form2.Left + 60

y2 = py + Form2.Top + 450

Picture1.Visible = False

SetParent Picture1.hwnd, R

Picture1.Move x1, y1

Picture1.Visible = True

Timer1.Interval = 10

Timer1.Enabled = True



End Sub



Private Sub Command2_Click()

' remise en position original

Picture1.Visible = False

SetParent Picture1.hwnd, Form1.hwnd

Picture1.Move px, py

Picture1.Visible = True

End Sub



Private Sub Timer1_Timer()

If x1 < x2 Then x1 = x1 + 15

If x1 > x2 Then x1 = x1 - 15

If y1 < y2 Then y1 = y1 + 15

If y1 > y2 Then y1 = y1 - 15

Picture1.Move x1, y1

If x1 x2 And y1 y2 Then

Timer1.Enabled = False

Picture1.Visible = False

SetParent Picture1.hwnd, Form2.hwnd

Picture1.Visible = True

Picture1.Move px, py

End If

End Sub




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


Unload Form2


End Sub



Daniel
0
ORTIPIC Messages postés 41 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 16 juillet 2007
25 août 2005 à 21:28
effectivement Daniel tu m as repondu pour la question 2:

Form2.Show
SetParent Picture1.hwnd, Form2.hwnd

j avais zapper

cool merci a tous
0
ORTIPIC Messages postés 41 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 16 juillet 2007
25 août 2005 à 22:05
terrible daniel

setparent evident pour moi maintent
et le passage sur le hwnd du bureau extra

parcontre le deplacement de 2 forms ensembles ca plante un peu trop a voir
0
Rejoignez-nous