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

Soyez le premier à donner votre avis sur cette source.

Vue 4 621 fois - Téléchargée 467 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

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

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
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
92
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

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

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?

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.