none
ATL COM, probleme dans visual studio 2013 avec la generation d'events et build RRS feed

  • Question

  • Bonjour,

    dans mon projet ATL COM C++ avec visual  studio 2013, comme j 'avais rajouté la gestion des evenements entre deux objets COM

    en voulant rajouter deux methodes à mes events d'un objet COM le wizard avec les attributs IDL ne me permet pas d'ajouter l'id des events (ca reste grisé) et une fois mes deux methodes generees dans le fichier (projet)_i.h, elles n'ont pas d'id.si je builde alors ces deux methodes disparaissent du fichier (projet)_i.h et si je rajoute aussi par exemple id(1) juste apres le crochet [ la methode disparait aussi à la compilation.

    celà me semble etre un probleme de visual studio 2013. et c'est tres genant car je ne peux pas compiler (il y a des erreurs).il y a t il une solution à celà ?


    lundi 6 juillet 2015 08:15

Réponses

  • J'ai resolu ce probleme finalement mais le wizard add method sur une interface d'evenement ne genere pas tout ce qu il faudrait.

    donc il faut dejà rajouter l'id(n) devant les deux fonctions generees dans le  fichier_i.h dans interface _IObjetEvents :

    [id(1), helpstring("method methode1")] HRESULT methode1([in] LONG ret, [in] BSTR message);

    [id(2), helpstring("method methode2")] HRESULT methode2([in] LONG ret);

    et on peut le rajouter dans le fichier .idl

    et ensuite il faut aussi rajouter le prototypes des methodes (qui sont virtuelles) dans le fichier_i.h: _IObjetEvents : public IDispatch
        {

            virtual HRESULT methode1( LONG ret,  BSTR message);
             virtual HRESULT methode2( LONG ret);
        };

    ensuite il vaut mieux faire build solution que rebuild

        
    • Marqué comme réponse stephane_l2 mercredi 8 juillet 2015 08:00
    mercredi 8 juillet 2015 07:59

Toutes les réponses

  • (ps: pour rajouter mes deux methodes je vais dans le class view et selectionne mon interface d'events de mon objet com et fait add method)
    lundi 6 juillet 2015 08:16
  • meme si je rajoute mes deux methodes dans le fichier .idl et que je le compile alors elles disparaissent du fichier _i.h et alors si je recompile mon projet j'ai des erreurs de build....
    lundi 6 juillet 2015 08:57
  • j'ai soumis ce probleme comme un bug du compilateur sur le report de bug de microsoft.....
    mardi 7 juillet 2015 09:21
  • J'ai resolu ce probleme finalement mais le wizard add method sur une interface d'evenement ne genere pas tout ce qu il faudrait.

    donc il faut dejà rajouter l'id(n) devant les deux fonctions generees dans le  fichier_i.h dans interface _IObjetEvents :

    [id(1), helpstring("method methode1")] HRESULT methode1([in] LONG ret, [in] BSTR message);

    [id(2), helpstring("method methode2")] HRESULT methode2([in] LONG ret);

    et on peut le rajouter dans le fichier .idl

    et ensuite il faut aussi rajouter le prototypes des methodes (qui sont virtuelles) dans le fichier_i.h: _IObjetEvents : public IDispatch
        {

            virtual HRESULT methode1( LONG ret,  BSTR message);
             virtual HRESULT methode2( LONG ret);
        };

    ensuite il vaut mieux faire build solution que rebuild

        
    • Marqué comme réponse stephane_l2 mercredi 8 juillet 2015 08:00
    mercredi 8 juillet 2015 07:59