[FAQ] Déplacé un controle (<=> Déplacé le Forms)
lu
Pour déplacé un winforms SANS barre de titre, (sous VC++ 2005 express )
j'ai creer un bouton, et je souhaite adapté ce code (trouvé dans la FAQ):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
//Position de la souris lorsque le bouton a été enfoncé
Point ^positionClick;
//
// Notifie si le bouton de la souris a été enfoncé sur le PictuBox
//
private: System::Void pictureBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
// Vérification si bouton gauche de la souris est bien enfoncé
if (e->Button == System::Windows::Forms::MouseButtons::Left)
positionClick = e->Location;
}
// Notifie si le curseur se déplace au dessus du PictureBox
private: System::Void pictureBox1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
// Vérification si bouton gauche de la souris est bien enfoncé
if (e->Button == System::Windows::Forms::MouseButtons::Left) {
// Calcul de la nouvelle position du PictureBox
pictureBox1->Location = Point(pictureBox1->Location.X + e->X - positionClick->X,
pictureBox1->Location.Y + e->Y - positionClick->Y);
}
} |
...aux évenement mouseDown et mouseMove d'un bouton 'buttonMove',
MAIS au lieu de déplacé le controle, je veux déplacé le Form
j'ai donc le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
//j'ajoute les declarations de form1 et buttonMove
public ref class Form1 : public System::Windows::Forms::Form
private: System::Windows::Forms::Button^ buttonMove;
...
// Position de la souris lorsque le bouton a été enfoncé
Point ^positionClick;
// Notifie si le bouton de la souris a été enfoncé sur le button
private: System::Void buttonMove_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
// Vérification si bouton gauche de la souris est bien enfoncé
if (e->Button == System::Windows::Forms::MouseButtons::Left) {
positionClick = e->Location;
}
}
//
// Notifie si le curseur se déplace au dessus du button
private: System::Void buttonMove_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
// Vérification si bouton gauche de la souris est bien enfoncé
if (e->Button == System::Windows::Forms::MouseButtons::Left) {
// Calcul de la nouvelle position du Forms
Form1->Location = Point(Form1->Location.X + e->X - positionClick->X,
Form1->Location.Y + e->Y - positionClick->Y);
}
} |
la derniere formule (ligne 187 - 'Form1->Loc...') pose un probleme:
Citation:
Form1.h(187) : error C2143: erreur de syntaxe*: absence de ';' avant '->'
XP-AL - 2 erreur(s), 0 avertissement(s)
======== Régénération globale*: 0 a réussi, 1 a échoué, 0 a été ignoré ========
pas d'erreur si je remplace Form1 par buttonMouse (mais evidement ca deplace le bouton et non le forms)
Code:
1 2 3
|
buttonMove->Location = Point(buttonMove->Location.X + e->X - positionClick->X,
buttonMove->Location.Y + e->Y - positionClick->Y); |
Citation:
XP-AL - 0 erreur(s), 0 avertissement(s)
======== Régénération globale*: 1 a réussi, 0 a échoué, 0 a été ignoré ========
la meme erreur si je remplace Form1 par Form (ou par System::Windows::Forms::Form)
cela vien t'il du fait que j'essai de controler le forms (public) depui un controle (privé)...comment y remedié ?