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 :

[COM] Assigner une m�thode � un �v�nement


Sujet :

C++/CLI

  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par d�faut [COM] Assigner une m�thode � un �v�nement
    Bonjour tout le monde,

    Contexte:
    J'ai un usercontrol en C# que je dois int�grer dans une forme en VB.
    Dans le COMM, je dois accrocher mes m�thodes au �v�nements du usercontrol.
    Usercontrol C# -> Wrapper C++/CLI compile en clr -> COMM -> forme VB

    Ce que j'ai fait � date:
    J'ai cr�� un Wrapper en clr
    J'ai ma m�thode en COMM qui est accroch�e � un �v�nement de mon usercontrol.

    Probl�me:
    J'ai assign� la m�thode en COMM comme ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_styleEditorCtrl->OnInfoViewerMouseRClick += gcnew System::Windows::Forms::MouseEventHandler(&CStyleView::OnMouseRClickStyleBrowser);
    Mais la m�thode OnMouseRClickStyleBrowser est static et elle utilise des object non statics et ce qui me donne une erreur � la compilation.

    Comment dois-je faire pour assigner ma m�thode non static � mon �v�nement?

    Merci d'avance pour les r�ponses et si vous avez besoin de plus d'informations, n'h�sitez pas!

  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
    Les pointeurs de fonction ordinaires n'acceptent pas les m�thodes non-statiques, mais les d�l�gu�s, si: Le plus simple est donc de rajouter une m�thode non-statique � ton wrapper C++/CLI, qui se charge de l'appel:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    m_styleEditorCtrl->OnInfoViewerMouseRClick += gcnew System::Windows::Forms::MouseEventHandler(this, &MonWrapper::OnMouseRClickStyleBrowser);
     
    private: void OnMouseRClickStyleBrowser(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
    {
    	m_pStyleView->OnMouseRClickStyleBrowser(ConvertirArgumentEvenement(e));
    }
    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 averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par d�faut
    Merci M�dinoc, mais j'obtiens toujours cette m�me erreur lorsque j'utilise des objets managed
    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
    #include <afxwinforms.h>
     
    #ifndef EXPORT_CATTOOL
    #define EXPORT_CATTOOL __declspec(dllimport)
    #endif
     
    class EXPORT_CATTOOL CStyleEditorWrapper
    {
    	public:
    		CStyleEditorWrapper();
    		Microsoft::VisualC::MFC::CWinFormsControl<CatalogToolsTabControl::StyleEditor::StyleEditor> m_styleEditorCtrl;
     
    	private:
    		void OnMouseRClickStyleBrowser(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e);
    };
    -------------------------
    error C3395: 'CStyleEditorWrapper::OnMouseRClickStyleBrowser' : __declspec(dllexport) cannot be applied to a function with the __clrcall calling convention
    Conna�trais-tu un moyen pour r�gler se probl�me?
    Merci d'avance!

  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
    CATTOOL, c'est la DLL que tu cherches � cr�er?
    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 averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par d�faut
    Oui, CATTOOL est une DLL que je dois cr�er

  6. #6
    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, j'ai l'impression que tu ne peux pas exporter une classe non-manag�e ayant des m�thodes manag�es (m�me si elles sont priv�es, apparemment ).

    Donc, tu devrais rendre ta classe CStyleEditorWrapper non-export�e, et exporter seulement le wrapper en C++/CLI.
    Ou bien, t'arranger pour qu'elle soit enti�rement non-manag�e, et ses m�thodes aussi (via #pragma unmanaged, etc.).
    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.

  7. #7
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par d�faut
    D'accord Merci M�dinoc, je vais essayer �a!

  8. #8
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par d�faut
    Enfin, �a fonctionne!
    Ce n'est pas moi qui ai trouv� la solution, mais mon superviseur.
    On avait d�j� regard� ensemble, mais �a n'avait rien donn�.
    Durant mes vacances, il s'est pench� l�-dessus et � trouv� la solution suivante :
    Le Usercontrol en C# est rest� le m�me,
    Le Wrapper en clr a �t� enlev�,
    Le code en COMM :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //-----------StyleView.h-----------
     
    //Déclaration du UserControl
    private : 
            Microsoft::VisualC::MFC::CWinFormsControl<CatalogToolsTabControl::StyleEditor::StyleEditor> m_styleEditorCtrl;
     
    //Création du Delegate
    public :
            void OnMouseRClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e);
     
            BEGIN_DELEGATE_MAP( CStyleView )
                EVENT_DELEGATE_ENTRY( OnMouseRClick, System::Object^, System::Windows::Forms::MouseEventArgs^ )
            END_DELEGATE_MAP()
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    //-----------StyleView.cpp-----------
     
    //Assignation de la méthode delegate à l'eventHandler en C#
    m_styleEditorCtrl->OnInfoViewerMouseRClick += MAKE_DELEGATE( System::Windows::Forms::MouseEventHandler, OnMouseRClick);

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

Discussions similaires

  1. R�ponses: 1
    Dernier message: 28/01/2014, 17h30
  2. R�ponses: 5
    Dernier message: 07/08/2008, 18h53
  3. R�ponses: 5
    Dernier message: 11/04/2008, 12h20
  4. Attacher un �v�nement � une m�thode de la classe courante
    Par hush dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 12/06/2007, 00h40
  5. [Ev�nements]Ajout d'une m�thode sur un �v�nement d'un bouton
    Par Salam59 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 28/03/2006, 15h47

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