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

MFC Discussion :

[ActiveX] Ajouter des fonctions à un activeX


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut [ActiveX] Ajouter des fonctions à un activeX
    Bonjour à tous,

    dans la série activeX, je voudrais l'ajout de fonction

    J'ai implémenté la FAQ suivante: http://c.developpez.com/faq/vc/?page...tivexAddDialog
    J'obtiens donc un active avec des controles. Dans mon cas, il s'agit de sliders, de combos et d'edit boxes. Je voudrais maintenant implémenter une méthode publique dans mon activeX permettant au programme qui utilise ce dernier de récupérer les valeurs de ces contrôles.

    J'ai donc tenté d'implémenter une méthode publique GetParameters() dans la classe CMonActiveXCtrl. Ensuite, dans MonProjet (le projet qui utilise MonActiveX), j'inclus le MonActiveX.h. Et là... omfg!! Ca ne compile plus, et j'obtiens tout un tas d'erreurs en tous genres, dont certaines sont vraiment trop étranges. Par exemple, dans MonProjet.cpp, dans le InitInstance():
    sur le code:
    CMonProjetDlg dlg;
    m_pMainWnd = &dlg;
    J'obtiens les erreurs:
    error C2440: '=' : cannot convert from 'CTestSynthDlg *__w64 ' to 'CWnd *'
    error C2262: 'dlg' : cannot be destroyed
    Ce sont des erreurs sur le code généré par la mfc. J'imagine donc qu'il y a des manipulations à faire. Mais quoi?

    Toute proposition est la bienvenue.
    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,
    il sort d'ou le MonActiveX.h ?
    c'est la classe wrapper de l'activex genérée par visual ?

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Oui.

    Visual génère, lors de la création du projet, les fichiers suivants:
    MonActiveX.h, .cpp
    MonActiveXCtrl.h, .cpp
    MonActiveXPropPage.h, .cpp
    et MonActiveX.def, MonActiveX.idl
    J'ai ensuite créé une classe à partir de la boite de dialogue que j'ai ajouté à mon activex: MaDialog.

    J'ai un peu avancé depuis mon dernier post. Maintenant j'arrive à faire le lien entre mon activeX et l'appli qui l'utilise, via MonActiveXCtrl.h.
    Mais je ne parviens toujours pas à récupérer les valeurs de mes controles (ceux qui sont sur MaDialog).

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    il faut que tu rajoutes des attributs publics avec le classwizard

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    la dialogue doit etre considerée comme une fenetre fille de la fenetre activex ..
    un GetWindow(GW_CHILD ) devrait te donner le handle sur la dialogue;

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par nico-pyright(c)
    il faut que tu rajoutes des attributs publics avec le classwizard
    Argh, j'utilise visual2003 (.net). Je n'ai donc pas de classwizzard. Il y a forcément l'équivalent, mais où?
    J'ai trouvé une piste: dans le "class view", il y a un item 'MonActiveXLib'. Si je 'droite-clique' sur cet item, il y a un 'add variable' qui apparait, mais... il est grisé (je ne peux pas cliquer dessus).

    Citation Envoyé par farscape
    un GetWindow(GW_CHILD ) devrait te donner le handle sur la dialogue;
    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CWnd* pWnd = GetWindow(GW_CHILD )
    pWnd est bizzare. Déjà, le pWnd->m_hWndOwner=0x00000000. Ce n'est pas logique non? Et puis il n'y a aucune information utilisable dans ce pWnd

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    attention c'est dans le programme et si tu fais un getwindow a partir du handle de fenetre de l'activex

  8. #8
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    ok. Alors j'ai essayé différentes choses, mais sans résultats. Je suis désolé, je suis un peu perdu avec ces activeX

    Il y a quelque chose que je ne comprends pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonActiveXCtrl* pannel = (MonActiveXCtrl*) this->GetDlgItem(ID_DE_MONACTIVEX_DANS_MONPROJETDLG);
    Logiquement, ce code devrait me donner un handle sur la fenêtre de mon activeX non? Pourtant, cela me renvoie un truc bizzare, non NULL mais inutilisable et avec des 0x00000000 partout

    Rappel: J'ai créé un nouveau projet: MonProjetDlg.cpp. MonProjet est un projet 'dialog based' qui comporte une dialog box dont le cpp correspondant est MonProjetDlg.cpp et cette dialog box inclu MonActiveX.

    Et de vous pencher sur mon problème... je rame dûr là

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    bon je t'ai bricolé un sample a partir de l'ocx que j'ai realisé ,
    j'ai généré un projet boite de dialogue qui l'utilise.
    dans le OnInitDialog j'affecte une valeur a l'edit de la boite de dialogue de l'ocx.
    http://farscape.developpez.com/Samples/TestOcxInDlg.zip
    note: l'activex de mon exemple doit etre enregistré ...

  10. #10
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    Waaaa merci

    Ton exemple fonctionne nickel, encre merci
    Cependant, j'ai 2 questions, parce que je parviens pas à faire mon propre exemple basé sur le tien
    * Le projet TestOcxInDlg est de quel type? (exe mfc, activex, ...)
    * Comment obtenir le fichier testocx.h (CTestOcx wrapper class)? Je ne comprends pas d'où il sort celui-là

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par r0d
    Waaaa merci

    Ton exemple fonctionne nickel, encre merci
    Cependant, j'ai 2 questions, parce que je parviens pas à faire mon propre exemple basé sur le tien
    * Le projet TestOcxInDlg est de quel type? (exe mfc, activex, ...)
    * Comment obtenir le fichier testocx.h (CTestOcx wrapper class)? Je ne comprends pas d'où il sort celui-là
    salut,
    1) le projet est un projet boite de dialogue MFC.
    2) je m'en doutais un peu ,d'ou ma question sur le wrapper de classe quelques post plus haut ...
    bon le pb c'est que ça depend de la version de l'ide de VC6 à VC2005 en passant par .net 200x les manipulations ne sont pas les mêmes .
    c'est quoi ta version ?

  12. #12
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    bonjour,

    il s'agit de visual 2003 .NET (certain disent visual 7).

    [edit]j'ai trouvé quelques infos sur cette classe wrapper sur la msdn ( http://msdn.microsoft.com/library/fr...perclasses.asp ), mais je n'y comprend pas grand chose [/edit]

  13. #13
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Sous vc6 la génération des classes wrapper de l’activex se fait au moment de son intégration dans le projet.
    Sous VC2005 après avoir choisit le composant dans la barre d’outils, la génération est effectuée lorsque l’on associe une variable à l’activex.
    Sous .net 2001 à 2003 je ne m’en souviens plus ! , la vérité doit être entre les deux..

  14. #14
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    ok, sous visual 2003 c'est pareil: le wrapper est créé lorsqu'on associe une variable à l'activeX! En fait, c'était ça qui me manquait depuis le début

    Ha, et bien voilà une semaine qui commence bien
    Et encore merci farscape, parce que j'ai bien galéré avec cette histoire


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout des fonctions a l'étape Execution Script java
    Par Rachid24 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 16/12/2008, 12h58
  2. Réponses: 0
    Dernier message: 01/10/2008, 17h17
  3. [DOM] ajouter des fonctions
    Par guy777 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/06/2008, 10h18
  4. [Carte graphique] ajouter des fonctions :3
    Par san_gohan dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 23/06/2008, 08h02
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18

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