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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
buttonMove->Location = Point(buttonMove->Location.X + e->X - positionClick->X,
			     buttonMove->Location.Y + e->Y - positionClick->Y);
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é ?