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

C++/CLI Discussion :

Distinguer le clic gauche du droit de la souris


Sujet :

C++/CLI

  1. #1
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut Distinguer le clic gauche du droit de la souris
    Bonjour,

    Je souhaiterais distinguer le gauche du droit de la souris.

    Voici mon code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	private: System::Void pictureBox1_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^ e)
     
    	{
     
     
    		if (e->Button == ::MouseButtons::Left) // Le code bug sur cette ligne!	***********************
    		{
    			.....		
                    }
    Voici les messages d'erreurs :

    Nom : Erreur condition souris.JPG
Affichages : 621
Taille : 36,8 Ko

    Auriez-vous une id�e ?

    Cordialement.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    L'enum MouseButtons n'est pas globale.
    Elle est probablement dans le namespace System::Windows::Forms.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    Bonjour,

    Merci M�dinoc pour votre r�ponse.
    En effet il fallait d�clarer using namespace System::Windows::Forms; avant namespace.... dans le fichier .h

    Cela fonctionne, merci.
    Cordialement.

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    NON!
    On ne met pas de using namespace dans un .h, du moins pas dans l'espace global.

    Par contre, tu peux mettre l'impl�mentation de ton MouseDown dans le .cpp, l� o� les using namespace sont bienvenus.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par d�faut
    Attention, il faut r�fl�chir � deux fois avant de faire un "using namespace" dans un ent�te.
    FAQ C++ : http://cpp.developpez.com/faq/cpp/?p...sing-namespace

    Edit : Grill� par Medinoc.

  6. #6
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    Bon je vois que j'ai tous faux.
    J'ai retirais using namespace System::Windows::Forms; du fichier.h
    Effectivement cela est interdit.
    J'ai donc essay� de le positionner dans le fichier cpp, mais cela ne fonctionne pas.

    Voici le cpp :

    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
    25
    26
    27
     
     
    #include "MyForm.h" // le nom d'en-tête pour le formulaire
     
    using namespace System;
    using namespace CaptureParSourie; // le nom du projet dans le fichier d'en-tête
     
    using namespace System::Windows::Forms; // non reconnu dans fichier .h (ne fonctionne pas)
     
     
     
    [STAThreadAttribute]
     
     
     
    int main(array<System::String ^> ^args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
     
     
    	Application::Run(gcnew MyForm()); // Starts the application.
     
     
    	return 0;
     
    }
    Et l� je suis perdu!

  7. #7
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Il faut sursp�cifier ta valeur

    if (e->Button == System::Windows::Forms::MouseButtons::Left) { /**/ } ... ou un truc comme cela (sans oublier le #using <System.Windows.Forms.dll>).

    Il faut s'aider de l'Intellisense de Visual, ou autre si tu utilises un autre IDE.

  8. #8
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    Bonjour,
    Merci foetus pour votre r�ponse.

    J'ai positionn� #using <System.Windows.Forms.dll> au d�but du fichier cpp puis j'ai mis la condition
    if (e->Button == System::Windows::Forms::MouseButtons::Left) dans le fichier .h et cela fonctionne.

    Pourriez-vous me confirmer que cette fa�on de proc�der est bonne ?

    Merci � tous, cordialement.

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par DD-78 Voir le message
    Bon je vois que j'ai tous faux.
    J'ai retirais using namespace System::Windows::Forms; du fichier.h
    Effectivement cela est interdit.
    J'ai donc essay� de le positionner dans le fichier cpp, mais cela ne fonctionne pas.

    Voici le cpp :

    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
    25
    26
    27
     
     
    #include "MyForm.h" // le nom d'en-tête pour le formulaire
     
    using namespace System;
    using namespace CaptureParSourie; // le nom du projet dans le fichier d'en-tête
     
    using namespace System::Windows::Forms; // non reconnu dans fichier .h (ne fonctionne pas)
     
     
     
    [STAThreadAttribute]
     
     
     
    int main(array<System::String ^> ^args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
     
     
    	Application::Run(gcnew MyForm()); // Starts the application.
     
     
    	return 0;
     
    }
    Et l� je suis perdu!
    Je parlais de MyForm.cpp, pas de Main.cpp.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    Bonjour M�dinoc,

    Mais je l'ai bien mis dans MyForm.cpp.

  11. #11
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Dans ce cas, tu dois pouvoir d�placer l'impl�mentation du MouseDown vers le .cpp:
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    //MyForm.h
     
    ref class MyForm
    {
    	...
    	private: System::Void pictureBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e);
    }
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //MyForm.cpp
    #include "MyForm.h"
     
    using namespace System;
    using namespace System::Windows::Forms;
     
    Void MyForm::pictureBox1_MouseDown(Object^ sender, MouseEventArgs^ e)
    {
    	if (e->Button == MouseButtons::Left)
    	{
    		...
    	}
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    Dans mon cas le d�placement vers MyForm.cpp ne fonctionne pas.
    Je suis oblig� de passer par MyForm.h [Design],
    dans propri�t�s > Ev�nement > clic sur MouseDown et cela s'ajoute dans MyForm.h.

    Pr�c�demment vous dites : Je parlais de MyForm.cpp, pas de Main.cpp.
    Dans mon projet je ne trouve pas de Main.cpp.

    Voici ce qui se passe lorsque j'effectue le d�placement vers le cpp :

    Nom : MyForm.cpp.JPG
Affichages : 634
Taille : 68,4 Ko

    On remarque que pictureBox1_MouseDown n'est pas reconnu.

  13. #13
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Si la classe MyForm est dans le namespace CaptureParSourie [sic], alors la d�finition de la m�thode doit y �tre aussi.
    Dans mon projet je ne trouve pas de Main.cpp.
    En effet, je viens de constater, � ma d�sagr�able surprise, que Visual Studio ne g�n�re pas de fichier d�di� � l'impl�mentation de la classe MyForm, s�par�ment d'un fichier d�di� au Main.
    En fait, Visual Studio semble tout faire pour encourager les d�veloppeurs � mettre l'impl�mentation de leurs classes C++/CLI dans le .h, en d�pit du bon sens.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre �prouv�
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Etude technique THT
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Par d�faut RE
    J�ai oubli� de pr�ciser que j�utilisais Visual Studio Community 2015 !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 27/06/2011, 15h59
  2. Distinguer le clic droit du clic gauche sur un TTreeView
    Par kimlee dans le forum Composants VCL
    R�ponses: 4
    Dernier message: 25/11/2009, 13h53
  3. [D�butant] Bouton gauche bouton droit de la souris
    Par pompier21 dans le forum Interfaces Graphiques
    R�ponses: 3
    Dernier message: 07/10/2008, 16h09
  4. R�ponses: 4
    Dernier message: 08/09/2006, 04h36
  5. R�ponses: 4
    Dernier message: 29/11/2002, 22h52

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