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 :

AfxSetResourceHandle ( ) help


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut AfxSetResourceHandle ( ) help
    Bonjour,
    Mon programme multilingue charge au démarrage une dll linguistique contenant un ensemble de resources Neutral (commune à toutes les langues, contenant les boites de dialogues) et d'autre part des StringTables localisées.
    J'utilise pour charger cette DLL la méthode décrite par Farscape:
    http://c.developpez.com/faq/vc/?page...gMultiLanguage
    Cela fonctionne parfaitement sur mon PC et semble t'il sur tout les PCs contenant l'environnement de développement.
    Par contre en distribution c'est autre chose mon appli plante...
    Je pense avoir +- localisé le problème mais je ne sait pas vraiment comment le résoudre. Les resources Neutral contiennent des objets ActiveX (Spread), j'ai l'impression que ce sont ces objets qui ne passent pas.
    J'ai un message d'erreur au lancement de mon appli "An unsupported operation was attempted "
    Si j'enlève cette dll linguistique mon prg tourne avec les resources originales sans problème.
    Avez-vous une idée pour moi?

  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
    Par défaut
    salut,
    ces activex sont distribués et enregistrés sur les postes ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Oui les activeX sont bien enregistrés.
    Si je ne charge pas la DLL linguistique au démarrage, je tourne donc sur les resources originales l'appli démarrare correctement

    J'ai fait tourner la version 'Debug' sur une machine qui me pose le problème j'ai plusieurs assertions au démarrage: la première f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp line 926
    elle se produit bien après avoir charger la dll au moment ou l'appli interprète la 'command line'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (!ProcessShellCommand(cmdInfo)) return FALSE;
    avec cmdInfo => cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;

  4. #4
    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
    Par défaut
    tu as distribué les MFC (7 d'après ce que je vois ) avec ton application ? (vcredist )

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    oui les Mfc sont linkée statiquement avec l'appli, les mises à jour se font via le net c'est plus pratique pour moi. Ce qui m'étonne c'est que je suis sur VS2005 (mfc 8 non!)

  6. #6
    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
    Par défaut
    si ça fonctionne sur un poste de dev ,
    c'est que le probléme tourne autour de la distribution d'un module ocx ,dll etc..
    ou de son enregistrement, vérifie bien que les ocx soient correctement enregistrés ça ne serait pas la première fois que ça arrive...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Cela tourne effectivement autour d'un OCX (FP Spread). Il est bien enregistré sur la machine de test (l'application tourne sans la dll linguistique).

    La difference entre les resources de la Dll linguistique et les resources de l'appli se situe uniquement au niveau de la string table.
    La dll linguistique contient cet ocx dans les resources Neutral avec un CLSID identique à celui qui se trouve dans les resources de l'application.
    Le fait de charger d'abord les resources principales et de venir les surcharger ne peut il pas provoquer un problème de licence?
    Ne peut-on pas au démarrage de l'appli empècher le chargement des resources principales?

  8. #8
    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
    Par défaut
    ton ocx ne serait pas en dll MFC ?
    et dans ce cas attention aux dll MFC ...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Que veux-tu dire?
    EN tous les cas cela semble bien être un problème d'enregistrement. Si je désenregistre (regsvr32 /u) mon ocx et que je lance mon appli sans resources linguistiques, l' ASSERT est le même, comme si l'utilisation de AfxSetResourceHandle() venait provoquer un probleme au niveau de l'enregistrment

  10. #10
    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
    Par défaut
    que si c'est un activex MFC ,il y a de fortes chances qu'il utilise les DLL MFC ...

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Ben oui...
    Je ne pense pas que le problème actuel vienne de là, l'appli tourne sans la dll linguistique. Mais effectivement c'est certainement quelque chose à fixer.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    J'ai une réponse de FarPoint, il semble que l'enregistrement de leur composant ne soit pas possible en dll, ou en tous les cas peut provoquer le type de probleme que je rencontre.

    Existe t'il une possiblité d'avoir une partie des resources en dehors de l'appli?
    Je m'explique: je garde les resources neutral dans le fichier RC de l'application (ces resources contiennent les composants OCX) et tout ce qui est localisé (Menu, StringTable,...) dans un fichier de resource externe type dll?

  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
    Par défaut
    je ne comprends pas cette réponse ,
    tu n'as pas besoin d'enregistrer la dll de ressources qui contient l'activex.
    l'activex doit être enregistré.
    la dll est lue et attachée au départ de l'application.
    je te rappel que tu disais que ça fonctionne sur ton poste de développement...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Un extrait du message de FPSpread
    If the hwndCtrl is not valid, then creation of the control from the dialog template failed. This could be due to either the control not being registered or a license exception. It is probably a license exception since you say that you have explicitly registered the control.

    The dialog editor in Visual Studio will use the licenseing interfaces implemented by the control to verify that your machine is licensed to use the control in design mode, and it will save the state of the control into the resources for you, along with the license key needed to create the control at run-time. But MFC/ATL will not use that license key to create the control if the dialog resource is loaded from a dll, because then anyone could get around the license that way. It will only create the control using the embedded license key if the dialog resource is loaded from the application EXE.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Résolu
    J'ai simplement créé et placé les composants spread dynamiquement au lieu de les placer dans le fichier de resource.

    Merci Farscape pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2003, 16h20
  2. help please
    Par atom267 dans le forum CORBA
    Réponses: 2
    Dernier message: 24/01/2003, 10h41
  3. [Kylix] fichiers help kylix2 oe ??
    Par sdoura2 dans le forum EDI
    Réponses: 2
    Dernier message: 29/11/2002, 14h32
  4. Help :Problème de clignotement
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/08/2002, 10h53
  5. Help InnoSetup ou Installshield
    Par buzz dans le forum Outils
    Réponses: 4
    Dernier message: 30/07/2002, 15h26

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