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

C++ Discussion :

2 activex (ocx) qui pointe vers les mêmes données ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 85
    Points
    85
    Par défaut 2 activex (ocx) qui pointe vers les mêmes données ?
    Salut à tous,

    J'ai développé un activex (en visual c++) pour gerer mon format proprietaire de fichier.

    Tout marche bien quand j'utilise un activex dans mon application (developpé en Borland Delphi 7).

    Si je veux ouvrir deux fichiers en simultané, je me suis dit, on va mettre deux activex sur ma form de mon application et appeler le fichier A avec l'activex 1 et le fichier B avec l'activex 2. et là GROS problème que je ne comprend pas !

    1/ le fichier A est ouvert dans l'activex 1 -> ça fonctionne
    2/ le fichier B est ouvert dans l'activex 2 -> ça fonctionne
    3/ si je regarde le fichier et les données pointées dans l'activex 1 juste après avoir lié le fichier B à l'activex 2 .... je retrouve le fichier B également dans l'activex 1 ... comme si les deux activex fonctionnaient vers les même ressources sans distinction

    Je sais pas comment m'y prendre, que vous faut-il pour m'aider, sachant que je suis vraiment perdu

    Merci pour votre aide, cordialement,

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    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 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Problème de moniker (ou d'absence de moniker) peut-être?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 85
    Points
    85
    Par défaut
    Merci pour ce debut de réponse, mais je ne comprend pas la réponse
    mais encore ?
    Est-ce qu'une visualisation des sources peut eventuelement etre utile ? je suis pres à fournir sur FTP un fichier zip contenant l'ensemble de mon projet (petit projet ou je serialize des données dans un fichier ou que je deserialize)

    Merci encore

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    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 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Je ne connais pas assez ActiveX pour ça et en plus je suis au boulot.

    Mais en clair, le moniker est ce qui identifie l'instance des données. En gros, il faut que tes objets aient un nom d'instance (ici, un nom de fichier) au lieu de seulement un nom de classe (CLSID, ProgID).

    Voir les fonctions MkParseDisplayName(), IMoniker::BindToObject, CreateFileMoniker(), et les articles sur les monikers dans MSDN.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 85
    Points
    85
    Par défaut
    je pense que vous êtes proche de la solution en effet, j'utilise un nom de classe unique ! je fais faire une recherche de ce côté et si je trouve, je reviens avec la solution. Merci encore et bon travail alors

    Citation Envoyé par Médinoc Voir le message
    Je ne connais pas assez ActiveX pour ça et en plus je suis au boulot.

    Mais en clair, le moniker est ce qui identifie l'instance des données. En gros, il faut que tes objets aient un nom d'instance (ici, un nom de fichier) au lieu de seulement un nom de classe (CLSID, ProgID).

    Voir les fonctions MkParseDisplayName(), IMoniker::BindToObject, CreateFileMoniker(), et les articles sur les monikers dans MSDN.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 85
    Points
    85
    Par défaut
    Bon je pense bien que la cause du soucis vient de là mais je ne comprend absolument pas comment ça fonctionne

    J'ai testé dans le Activex Control Test Container si le problème n'etais tout de même pas lié à delphi mais j'ai le même résultat, les deux activex pointes vers les même données !

    Mon CLSID est fixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const CLSID CLSID_FileGestion = {0x7CBA8805,0xA0AC,0x403F,{0x9C,0xC6,0x63,0x8A,0x9D,0xD8,0x9B,0xC3}};
    je ne sais pas comment utiliser les Moniker pour rendre variable ce CLSID (enfin si j'ai compri le but de la manoeuvre)

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    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 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Il ne s'agit pas de rendre le CLSID variable, mais de rendre la création de l'objet dépendante d'autre chose que le CLSID.

    Cela nécessite entre autres d'associer directement le type de de fichier (.extension) à ta classe COM (apparemment, ça se fait en mettant directement le ProgID de ta classe dans la valeur par défaut de la clé correspondant à ton extension, dans HKEY_CLASSES_ROOT). Mais ensuite, je ne sais plus comment ça marche avec les file moniker et compagnie. Lire l'article sur les monikers pour comprendre...

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2015, 14h31
  2. Réponses: 10
    Dernier message: 04/08/2011, 22h21
  3. 2 variables qui pointent vers les mêmes valeurs: comment l'éviter?
    Par skystef dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 03/04/2008, 12h51
  4. bouton qui pointe vers une page jsp
    Par redabadache3 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/10/2007, 15h33
  5. [j3d] afficher une ligne qui point vers un objet
    Par guitalca dans le forum 3D
    Réponses: 1
    Dernier message: 06/03/2006, 22h44

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