none
conversion de type RRS feed

  • Question

  • Bonjour

     

    je suis en train de faire une petite application mettant en oeuvre des DLL.

    Aucun PB pour faire une DLL d'extension MFC

    il n'en va pas de même pour faire Une DLL classique. cette application consiste à créer des lignes dans une fenêtre.

    j'ai un fichier line.h qui contient la description des objets de type CLine.

    j'ai un fichier ModArt qui contient le code suivant :

    void NewLine(CRect pRect, CObArray *poaLines);

    extern "C" void PASCAL EXPORT ModArtNewDrawing(CRect pRect,CObArray *poaLines);

    extern "C" void PASCAL EXPORT ModArtDraw(CDC *pDC, CObArray *poaLines);

    extern "C" void PASCAL EXPORT ModArtSerialize(CArchive &ar,CObArray *poaLines);

    extern "C" void PASCAL EXPORT ModArtClearDrawing(CObArray *poaLines);

     le code Line.cpp contient la définition des méthodes du fichier d'en-tête

    le code ModArt.cpp contient le code des fonctions déclarées dans ModArt.h

    voici un exemple de définition de fonction :

     

    extern "C" void PASCAL EXPORT ModArtDraw(CDC* pDC, CObArray* poaLines)

    {

    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // Corps normal de la fonction

    // Récupère le nombre de lignes dans le tableau d'objets

    int liCount = poaLines->GetSize();

    int liPos;

    // Y a-t-il des objets dans le tableau ?

    if (liCount)

    {

    // Boucle en parcourant le tableau et en dessinant chaque objet

    for (liPos = 0; liPos < liCount; liPos++)

    ((CLine*)poaLines[liPos])->Draw(pDC);

    }

    }

    j'ai donc un tableau de type CObArray contenant des pointeurs sur des objets de type CLine (CLine*)

    lorsque je j'exécute la compilation de mon application afin d'obtenir le fichier.LIB et le fichier.DLL j'ai l'erreur suivante pour la ligne ci-dessous

    ((CLine*)poaLines[liPos])->Draw(pDC);

     

    message d'erreur :

    1>d:\bts\annee_2008_2009\bibliothèque statique dynamique\dll\classisque\classisque\modart.cpp(138) : error C2440: 'cast de type' : impossible de convertir de 'CObArray' en 'CLine *'

    1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé

     

    je ne vois pas d'ou viens cette erreur j'attends votre aide par avance merci

     

    JF MARTIN

     

    jeudi 25 septembre 2008 13:46

Réponses

  • J'ai obtenu la réponse à mon problème

     il fallait coder

    for (liPos = 0; liPos < liCount; liPos++)

    ((CLine*)(*poaLines)[liPos])->Draw(pDC);

     

    Merci à developpez.com

     

    JF MARTIN

    lundi 29 septembre 2008 09:02