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 :

[ATL]Embarqué ocx dans une ressource?


Sujet :

Visual C++

  1. #1
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut [ATL]Embarqué ocx dans une ressource?
    Bonjour,
    comme je l'indique dans le titre de ce post je me demande s'il est possible d'embarqué un ocx dans une ressource et de le charger dynamiquement depuis celle-ci.
    Je travaille sous VC Net 2003/Windows 2000, et mon but est de créer un exécutable lisant un fichier flash en utilisant l'activeX flash.ocx. J'aimerais que mon exécutable soit standalone comme le projecteur de flash : afin de faciliter la distribution du fichier, j'aimerais que l'animation et le player pour la lire soit dans le même fichier...

    Quelqu'un saurait-il comment arriver à ce but?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Eh bien tu peux mettre n'importe quoi dans une ressource.
    Ensuite, tu peux extraire la ressource en question vers le dossier temporaire...

    Par contre, l'OCX ne sera pas "enregistré", il faudra donc que tu le charges explicitement avec LoadLibrary() et que tu utilises sa fonction DllGetClassObject() pour créer des objets des classes qu'il expose...

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Sur ta resource boite de dialogue tu cliques droit puis insérer un contrôle ActiveX après tu choisis dans une box l'activeX de ton choix.
    Cette box recense tous les activex actuellement inscrit dans ta machine.
    Avec un code MFC c'est facile. Soit tu utilise un wrapper MFC ou bien tu utilise la directive #import "son chemin\flash.ocx" le compilo te génèrera le *.tlh et *.tli incluant toutes les interfaces COM de l'ActiveX avec les SMART_PTR

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Ce n'est pas ce qu'a demandé le P.O.

  5. #5
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Ok. Merci Medinoc, je vais essayez de l'implémenter ainsi : en gros je dois extraire la ressource vers un rep temporaire lors de l'exécution... Et effectuer mes appels comme pour une DLL non COM?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Pas exactement comme une DLL non-COM: Tu dois appeler DllGetClassObject() comme une DLL non-COM, mais une fois que tu as obtenu le pointeur vers la ClassFactory voulue, c'est comme si tu l'avais obtenu avec CoGetClassObject()...

  7. #7
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    OK merci. Je vois... Par contre cela m'amène à une seconde question qui n'a rien à voir avec mon problème, mais avec la solution que tu proposes :
    je peux tout à fais créer une DLL com et y placer une fonction particulière renvoyant un pointeur vers la ClassFactory : ainsi j'aurais recréé un système COM-free et évitant l'enregistrement de mon composant au niveau de la base de registre, non ?

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    En effet, mais je dirais qu'il est inutile de créer une fonction particulière pour ça: Normalement, ta DLL exporte déjà la fonction DllGetClassObject(), qui te retourne un pointeur vers la ClassFactory demandée...

  9. #9
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Je vais me renseigner pour en apprendre davantage sur le fonctionnement COM. D'un autre côté je te remercie pour tes éclaircissements, je vais essayer de mettre cela en application.
    Lek.

  10. #10
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 476
    Points
    20 476
    Par défaut
    Citation Envoyé par LEK Voir le message
    Bonjour,
    comme je l'indique dans le titre de ce post je me demande s'il est possible d'embarqué un ocx dans une ressource et de le charger dynamiquement depuis celle-ci.
    Je dirais que c'est impossible c'est radicalement contraire à la philosophie des controles Active X.
    Un Active X est fait pour être distribué.
    Tu peux peut-être y arriver au prix d'un certain bricolage mais en théorie tu dois distribuer l'OCX avec ton application.
    Regarde les conditions d'utilisation des objets de Flash

  11. #11
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    A vrai dire, je n'ai effectivement pas lu ces conditions ... Chose que je me vais réparer de ce pas ! Mon but est d'avoir un exécutable se suffisant à lui même, mais tu as sans doute raison, je devrais plutôt voir les conditions de redistribution.
    Quoiqu'il me semble que certaines boîtes proposent de créer des projectors (exe incluant une animation et permettant sa lecture); j'aimerais vraiment savoir comment elles y arrivent...

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 476
    Points
    20 476
    Par défaut
    Citation Envoyé par LEK Voir le message
    Quoiqu'il me semble que certaines boîtes proposent de créer des projectors (exe incluant une animation et permettant sa lecture); j'aimerais vraiment
    savoir comment elles y arrivent...
    Les outils de Adobe/Macromedia ne permettent pas cela ?
    ON peut toujours lier un ocx en ressources à un .exe comme ressource binaire mais après il faudra le regénérer sur disque pour pouvoir l'enregistrer et l'appeler

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/10/2006, 16h11
  2. Réponses: 4
    Dernier message: 24/03/2006, 13h24
  3. [VB]probleme double quote dans une ressource de type string
    Par JulienCEA dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/02/2006, 12h38
  4. Lire un texte dans une ressource en dll
    Par fred78 dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2005, 18h08
  5. Inclure une dll dans une ressource
    Par bgcode dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/08/2003, 11h12

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