IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[C++.net]Déplacer un Panel avec la souris


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut [C++.net]Déplacer un Panel avec la souris
    J'ai trouvé un tuto qui permet de faire à peu près ce que je souhaite seulement il est fait pour C++ Builder

    http://chgi.developpez.com/tips2/ "Déplacement d'une fenêtre sans barre de titre :"

    j'aimerai donc savoir comment on fait la même chose sous VC++.net

    je ne vois pas à quoi correspond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Left += X-XPos;
    Top += Y-YPos;
    sous VC++.net car quand je met X,Y comme ça sous VC++.net il me met
    "error C2065: 'X' : undeclared identifier,error C2065: 'Y' : undeclared identifier"
    De plus,
    Comment utilise t-on ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ReleaseCapture();
    SendMessage(Handle, WM_SYSCOMMAND, 0xF012, 0);
    sous VC++.net ?

    Peut-on dire que ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
          XPos = X;
          YPos = Y;
          if (Button == mbLeft) Deplacement = true;
    }
    équivaut à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private: System::Void vig_MouseDown(System::Object *Sender, System::Windows::Forms::MouseEventArgs * e)
    {
    	ypos = e->Y;
    	xpos = e->X;
    	if(e->Button == MouseButtons::Left)
    	{
    		deplacement=true;
    	}
    }
    Merci pour celui qui trouve une conversion de ces codes

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oui, c'est équivalent

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    et pour ce qui est du :
    Left += X-XPos;
    Top += Y-YPos;

    :

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par Dlyan
    et pour ce qui est du :
    Left += X-XPos;
    Top += Y-YPos;

    :
    il faut utiliser la propriété Location de ton controle

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    Pourrais-tu être plus précis pour le X,Y et Left Top.
    Dans mon cas c'est de déplacer un panel dison qu'il s'appelle panel1

    voile ce que j'ai fait depuis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private: System::Void vig_MouseDown(System::Object *Sender, System::Windows::Forms::MouseEventArgs * e)
    {
    ypos = e->Y;
    xpos = e->X;
    if(e->Button == MouseButtons::Left)
    {
    deplacement=true;
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private: System::Void vig_MouseUp(System::Object *  sender, System::Windows::Forms::MouseEventArgs *  e)
    {
    deplacement=false;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private: System::Void vig_MouseMove(System::Object *  sender, System::Windows::Forms::MouseEventArgs *  e)
     {
     if(deplacement==true)
    {
    Left += e->Y-xpos;
    Top += e->X-ypos;
    }
    }
    je sais pas si c'est équivalent au tuto tout ce que je sais c'est que ça déplace pas mon panel mais toute ma fenetre principale à une position bizarre

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    left devient Location.X
    top devient Location.Y

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    Je vien de remplacer le left et le top mais rien ne se passe lors que j'essaye de déplacer mon panel avec le bouton gauche ça doit venir de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ypos = e->Y;
    xpos = e->X;
    ou bien celui là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Location.X += e->Y-xpos;
    Location.Y += e->X-ypos;
    et pourquoi ce "+=" ?

    Je vois pas aussi à quoi correspond le int X et int Y dans le paramètre de son constructeur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (TObject *Sender, TShiftState Shift,int X, int Y)

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par Dlyan
    Je vois pas aussi à quoi correspond le int X et int Y dans le paramètre de son constructeur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (TObject *Sender, TShiftState Shift,int X, int Y)
    ce n'est pas le constructeur, mais les paramètres de la fonction

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    bah voilà ce que ça donne :

    http://www.megaupload.com/fr/?d=CWDFVBPS

    (le lien pour télécharger est un peu en haut à droite cacher par la pop-up"Mageupload Link")

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Désolé, le firewall de ma boite m'empeche d'aller sur ce lien.

    De toutes facons, je n'ai pas regardé l'article de CHGI, mais le principe est surement bon, donc c'est que ca vient de ta traduction

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    Moi aussi je pense que le principe est bon donc si tu as du nouveau sur la conversion préviens moi SVP

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ben, je vais pas regarder plus que ca, mais ca va ressembler à ca :
    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
    	 bool deplacement;
    			 int XPos, YPos;
    ...
    	private: System::Void vig_down(System::Object *  sender, System::Windows::Forms::MouseEventArgs *  e)
    			 {
    				XPos = e->X;
    				YPos = e->Y;
    				 if(e->Button == MouseButtons::Left)
    				 {
                         deplacement=true;
    				 }
     			 }
    	private: System::Void vig_Up(System::Object *  sender, System::Windows::Forms::MouseEventArgs *  e)
    			 {
                       deplacement=false;
     			 }
    	private: System::Void vig_Move(System::Object *  sender, System::Windows::Forms::MouseEventArgs *  e)
    			 {
    				 if (deplacement)
    				 {
    					 vig->Top = e->Y - YPos;
    					 vig->Left = e->X - XPos;
    				 }
     			 }

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    J'ai dejà essayer ça avant mais on obtient un déplacement étrange
    si vera si tu arrive à télécharger mon appli

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    Comment utilise t-on sa deuxième méthode en C++.net ?

    c-à-d

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
       ReleaseCapture();
       SendMessage(Handle, WM_SYSCOMMAND, 0xF012, 0);
    }

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    essaye de télécharger l'appli que je t'ai donné plus haut tu vera à quoi ressemble le déplacement

    PS: Essaye de voir SVP

  16. #16
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je ne peux pas télécharger, mon firewall me l'en empeche (c'est un site proscrit par ma boite)

    Sinon, cela se traduit par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				ReleaseCapture();
    				HWND Handle = static_cast<HWND>(static_cast<void *>(vig->Handle));
    				SendMessage(Handle, WM_SYSCOMMAND, 0xF012, 0);
    Cela fonctionne, je viens d'essayer

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    ça serait trp long de te copier toute les erreurs que j'obtient, tout ça pour te dire que ça marche pas chez moi.

    Avec ce que tu as fait arrive tu à déplacer un composant avec le bouton gauche de la souris enfoncée ?

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oui

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 33
    Points
    33
    Par défaut
    serait-il possible d'avoir ton appli ou ça fonctionne ?

  20. #20
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Déplacer un panel avec la souris
    Par zyanya dans le forum Flex
    Réponses: 4
    Dernier message: 15/04/2011, 09h38
  2. [C#] Déplacer un composant avec la souris
    Par GéniuS77 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/04/2011, 23h12
  3. Déplacer un panel avec la souris
    Par Harry dans le forum Delphi
    Réponses: 14
    Dernier message: 05/06/2006, 19h18
  4. Déplacer une TImage avec la souris
    Par Ingelishome dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/03/2005, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo