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

Visual C++ Discussion :

passage d'argument activeX Visual C++ à Borland


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut passage d'argument activeX Visual C++ à Borland
    Bonjour,

    Je développe un composant ActiveX sous Visual Studio en C++ et je dois l'intégrer à Borland C++ Builder.

    Lorsque je teste mon composant sous borland, toutes les méthodes qui utilisent autre chose que des int, des bool ou void ne sont jamais appelée.

    je pense que cela vient de la dispatchmap.

    un exemple :
    la dispatchmap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BEGIN_DISPATCH_MAP(CCViewer3DCtrl, COleControl)
          DISP_FUNCTION_ID(CCViewer3DCtrl, "addIvFile2", 9, addIvFile2, VT_I4, VTS_PUNKNOWN)
    END_DISPATCH_MAP()
    header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public:
    afx_msg long addIvFile2(char* path);
    .ccp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    long CCViewer3DCtrl::addIvFile2(char* path)
    {
        //code de addivfile
        SoSeparator* ivSep ;
        SoInput in;
        if (in.openFile("C:\\spheres.iv")) 
        {
          SoSeparator * ivSep = SoDB::readAll(&in);
          ivSep->ref() ;
          root->addChild(ivSep);
            return 124 ;
        }
        return 125;
    }
    .idl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dispinterface _DCViewer3D
        {
            properties:
            methods:
                    [id(9), helpstring("method addIvFile2")] LONG addIvFile2(CHAR* path);
        };

    quand cette méthode est appelée sous borland, elle ne retourne rien et j'ai le message suivant :
    warning : automation argument coercion failed

    Pouvez vous m'aider ? :o

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Par défaut
    Bon il se trouve qu'il faut utiliser le type LPUNKNOWN* pour faire passer des structures. (un pointeur sur void).
    Mais vu que j'ai eu le même problème (warning : automation argument coercion failed) en l'utilisant, ma solution provisoire est d'utiliser des short* et de caster.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    LPUNKNOWN, c'est uniquement pour des objets ActiveX.
    Si tu veux échanger des données, passe plutôt par un SAFEARRAY.
    Si tu veux échanger des chaînes de caractères, tu dois passer une BSTR (chaîne de caractères UTF-16 allouée avec SysAllocString()).
    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.

Discussions similaires

  1. passage d'argument sur l'imprimante
    Par linux dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/10/2005, 16h25
  2. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17
  3. [TASM] Passage d'argument à une macro
    Par sorry60 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/04/2005, 18h22
  4. [web] passage d'arguments à un CGI
    Par ma2th dans le forum Web
    Réponses: 4
    Dernier message: 20/08/2004, 12h18
  5. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59

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