Move qui move pas??

cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 9 mars 2005 à 01:45
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 9 mars 2005 à 23:49
Bonjour,



je suis entrain de reprendre un programme.



J'ai ecrit le suivant, la fenetre est sensee bouger puis on copie ce qui se trouve dessous dessus.



le probleme, c'est que la forme ne bouge pas, pire, elle bouge si je met le move apres la fonction StretchBlt je ne vois pas comment cette fonction peut annuler le deplacement de la fenetre

pouvez vous eclairer ma lanterne vant que je ne devienne chevre...



Move Left + (X) * 15, Top + (Y) * 15

'Avant de capturer une image il faut cacher la fenêtre afin qu'elle n'apparaisse pas dans la capture.

Visible = False

'Il faut laisse à Windows le temps de la masquer. Donc, on lui redonne la main durant un instant.

DoEvents

'Maintenant, on capture la portion voulue de l'image et on la place comme image d'arrière plan de la fenêtre.

StretchBlt hdc, _

0, 0, _

ScaleWidth, ScaleHeight, _

GetDC(0), _

(Left / 15), (Top / 15), _

ScaleWidth, ScaleHeight, _

vbSrcCopy



'On réaffiche la fenêtre

Visible = True

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
9 mars 2005 à 02:18
j'ai essayé, chez moi ça marche.
c'est quoi X et Y ?
est-ce que le Move se fait sans StrechBlt ?
peut être qu'un seul DoEvents ne suffit pas
essayes ça:
Do
Loop Until DoEvents = 0

sinon il y a un léger décalage, j'ai dû rajouter les bordures de la fenêtre
4 + (Left / 15), 30 + (Top / 15), _

Daniel
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
9 mars 2005 à 22:06
Le move se fait quand il est apres le StrechBlt



pour les bordures, je n'en ai pas.



Le X et le Y viennent du deplacement de la souris.



je vais essayer de neutraliser le StrechBlt, c'est une bonne idee.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
9 mars 2005 à 22:15
c'est pas le Move qui a besoin de temps, c'est Visible = False
donc tu peux mettre le Visible d'abord le Move ensuite et après le DoEvents.
pour le X, Y j'avais pensé que les unités étaient mauvaises et donc que le Move ne se faisait pas.
d'où la question est ce que le Move se fait quand même mais peut être pas assez vite ?
pour la bordure même si BorderStyle = 0 t'as au moins une bordeure de 4.

Daniel
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
9 mars 2005 à 23:22
C'est bien le visible qui cree des problemes.



est-tu sur de ta boucle

Do
Loop Until DoEvents = 0

chez moi, il genere une boucle sans fin.
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
9 mars 2005 à 23:49
j'ai vu ça dans un exemple et j'ai été étonné que DoEvents pouvait avoir une valeur.
en faisant MsgBox DoEvents il me renvoie la valeur 1.
donc apparemment DoEvents peut prendre 2 valeurs 0 ou 1.
j'ai testé l'exemple et ça n'a pas bouclé
j'en sais pas plus...

Daniel
0
Rejoignez-nous