Form magnétique qui se colle au bordure de l'écran

Soyez le premier à donner votre avis sur cette source.

Vue 4 931 fois - Téléchargée 518 fois

Description

Cette source vous montre comme il est possible de rendre l'effet de magnétisme, un peu comme winamp pour ceux qui connaissent

Source / Exemple :


Private Type Ecran
    X As Integer
    Y As Integer
End Type
Private Function get_Res() As Ecran
    get_Res.X = Screen.Width \ Screen.TwipsPerPixelX
    get_Res.Y = Screen.Height \ Screen.TwipsPerPixelY
End Function
Private Sub form_load()
Timer1.Interval = 1
End Sub
'détermine la position la position de la form tous les x secondes
Private Sub Timer1_Timer()
If Form1.Top < 480 Then '480 est une mesure en twip
Form1.Top = 0 'colle la form contre la bordure du haut
End If
If Form1.Top > (((get_Res.Y * 15) - Form1.Height) - 800) Then '*15 signifie que je multiplie la largeur de l'écran (mesure en twip) que je multiplie par 15 pour avoir la mesure en pixels
Form1.Top = (((get_Res.Y * 15) - Form1.Height) - (420)) 'colle la form contre la barre des taches
End If
If Form1.Left > (((get_Res.X * 15) - Form1.Width) - 480) Then
Form1.Left = ((get_Res.X * 15) - Form1.Width) 'colle la form contre la bordure de droite
End If
If Form1.Left < 480 Then
Form1.Left = 0 'colle la form contre la bordure de gauche
End If
End Sub

Conclusion :


Pour le moment aucun bug connu. Ca serait sympa que vous puissiez tester le code sous différentes résolution, j'ai les conçu sous 800*600 et normalement fontionne sous toutes les résolutions. merci d'avance pour vos remarques constructives et vos notes...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
alvinp Messages postés 167 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 31 août 2011
10 mai 2006 à 15:06
Rajoute une petite condition pour ne pas avoir de bug quand tu agrandit au maximum la fenêtre ::

If Me.Top > 5 And Me.Left > 5 Then
If Me.Top < 480 Then
Me.Top = 0
End If
If Me.Top > (((get_Res.Y * 15) - Me.Height) - 800) Then
Me.Top = (((get_Res.Y * 15) - Me.Height) - (420))
End If
If Me.Left > (((get_Res.X * 15) - Me.Width) - 480) Then
Me.Left = ((get_Res.X * 15) - Me.Width)
End If
If Me.Left < 480 Then
Me.Left = 0
End If
End If

Je trouve que c'est mieu comme sa ;)
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
23 sept. 2004 à 21:47
personne n'a une idee de comment faire un truc parfait comme winamp ?
Qui se colle au autre fenetre et a la barre des tache quand elle est plus grande que la normale, etc...

@++
YoMan64
PhPKoDe.Com
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
11 févr. 2004 à 10:23
Pour récupèrer les événements souris, utilisez la fonction SetCapture, ainsi on peut intercepter le MouseUp !

DarK Sidious
cs_cosmic Messages postés 61 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 16 mai 2005
14 nov. 2002 à 15:02
iubito a fait une remarque interressente.
Je n'ai pas pensé a la barre des taches, je vais essayer de remédier a se problème.
J'espère faire une mise a jour très bientôt...
Merci pour vos commentaire...je ne suis qu'un débutant et je suis assez content de voir au moment ou j'écrit ce message il y a 133 affichage.
merci a tous pour vitre intéret.
Roro0145 Messages postés 2 Date d'inscription dimanche 19 mai 2002 Statut Membre Dernière intervention 14 novembre 2002
14 nov. 2002 à 14:00
Le prog de cosmic est interessant en ce sens qu'il amène à se poser la question proposée par iubito. Comment faire pour que le repositionnement de la fenêtre au bord de l'écran n'intervienne que lorsqu'on relâche la souris? Pas si simple car il faut pouvoir intercepter les messages de Form1. En effet, VB ne propose pas de fonction directe pour gérer les événements souris se produisant sur la barre de titre (du moins, pas à ma connaissance). Quelqu'un sait-il faire cela?
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.