Rendre mobile une form "none" et placement de départ : centre haut
dimic13
Messages postés4Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention28 juin 2009
-
28 juin 2009 à 12:00
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
28 juin 2009 à 15:17
Bonjour,
Je voudrais rendre ma form mobile, c'est à dire pouvoir la déplacer lorsqu'on clique sur un espace vide de la form et que l'on déplace la souris. Biensur, la formborderstyle est 0 (none).
Ensuite, j'ai aussi besoin d'aide pour que ma fenêtre s'ouvre automatiquement en haut de l'écran, au centre.
Merci à vous !
A voir également:
Rendre mobile une form "none" et placement de départ : centre haut
Private Declare Function
ReleaseCapture Lib"user32" () As Integer
Private Const HTCAPTION As
Integer = 2
Private Const WM_NCLBUTTONDOWN
As Integer = &HA1S
Private
Declare Function SendMessage Lib"user32"Alias"SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer
Private Sub Form_MouseDown(ByVal
sender As Object, ByVal e
As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If
e.Button = Windows.Forms.MouseButtons.Left Then
ReleaseCapture()
SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN,
HTCAPTION, 0)
End If
End Sub
toutes les réponses sur WWW.CODYX.ORG
prochain réflexe à prendre désormais
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 juin 2009 à 12:27
faut faire quelques essais quand même hein !!
Sub setPositionToTopCenter(ByRef frm As System.Windows.Forms.Form, Optional ByVal topMargin As Integer = 0)
'largeur de de l'écran
Dim screenWidth As Integer = Screen.PrimaryScreen.Bounds.Width
'largeur de la form
Dim formWidth As Integer = frm.Width
'position top
frm.Top = topMargin
'position centrée
frm.Left = (screenWidth / 2) - (formWidth / 2)
End Sub
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 juin 2009 à 13:42
Ah oui, et pour ce qui est du centre de l'écran, met la propriété StartPosition sur CenterScreen si ton formulaire est celui de démarrage du programme, sinon sur CenterParent si celle-ci est ouverte via un autre formulaire :
N'oublis pas de préciser le formulaire parent (owner) si tu ouvre ton formulaire en mode non Modal
From1.Show (Me)
Pas la peine si tu ouvre en mode modal, le formulaire appelant est automatiquement le parent.
From1.ShowDialog
++
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 28 juin 2009 à 13:52
salut Mayzz,
déplacement -> les 2 manières s'équivalent, rien de plus simple ou de plus compliqué. ici on simule le réel déplacement depuis la barre de titre, c'est plus logique (d'après moi).
on peut aussi jouer directement avec les autres messages windows (voir l'autre snippet au même lien)
position -> la question est de centrer uniquement sur X, pas sur Y (d'où le paramètre optionnel).
donc pas configurable depuis les propriétés
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 juin 2009 à 14:03
Effectivement, je me suis un peu mal exprimé, plus simple, voulais dire sans API étant donnée qu'en .Net on fait de moins en moins appel aux API mais c'est pas forcément le cas.
Pour ce qui est du centrage, désolé, j'ai mal lu l'énoncé... Autant pour moi :)
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <