Activex control

Résolu
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonsoir à tous

J'ai crée un control il fonctionne aussi j'ai crée le fichier ocx et enregistrer dans le system32 directory

Dans mon projet j'ai ajouté au tableau des components le control et placé sur la form
jusque la tout marche bien

le problème est s je modifie le control
et make ocx de nouveau quand j'ouvre mon projet
j'ai une erreur can load ocx

merci

10 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

Ok, mais à la prochaine, compile le en mode compatibilité binaire ou de projet histoire de ne pas avoir à refaire un ocx à chaque compilation... c'est quand même beaucoup plus pratique.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
OUI BIEN SUR
normalement il faut seulement faire make ocx
et pas besoin de tout récrire
Messages postés
308
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
je pense que tu dois donner plus de détails...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

Est-ce que tu le compile en mode de compatibilité binaire ? Sans cà, la nouvelle référence écrase l'ancienne référence d'activeX, et forcément, l'exe tout comme ton projet ne peux pas retrouver la version correspondante à l'activeX que tu as rajouté dans ton formulaire.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
Bonjour
DARSIDIOUS salut
comment savoir si je compile en mode binaire ?
Je vais tenter de mieux expliquer
j'ai crée un control activex et après l'avoir testé je l'ai compilé et crée le fichier ocx
make ocx press ok
le fichier a été crée sans problème
Dans mon projet(standard exe project) j'ai ajouté le control (project -> components -> check
apply ok)
le control a apparut dans le toolbox
je l'ai placé sur les forms jusqu'à la tout marche bien
j'ai du modifié le control
donc j'ai sauvegardé et fermé mon projet
et ouvert le projet qui test le control
modifié le control testé et ensuite make ocx
j'ai confirmé le message comme quoi un ocx existait déja et le remplacer par celui ci
press ok l'ocx a été crée et remplace l'ancien
Quand j'ai réouvert mon projet j'ai eu l'erreur
suivante "E:/BBBPROJ/fichier.ocx can't be loaded continue ..."
(normallement j'ai le message "fichier.ocx is upgraded to ver xx " et le projet s'ouvre sans problème)
si je dis oui le projet est chargé sans le control il ne se trouve plus dans le toolbox

Merci à vous
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

C'est pas compilé en mode "binaire" mais compilé en mode "compatibilité binaire", c'est différent.

Comme tu l'as dit toi même : "normallement j'ai le message "fichier.ocx is upgraded to ver xx " et le projet s'ouvre sans problème", ca c'est pour le mode compatibilité binaire ou par projet, s'il ne te dit pas cà, c'est que tu l'as compilé en mode "sans compatibilité", et du coup, un nouveau CLSID est attribué à chaque compilation, et vu que tu as écrasé l'ancien fichier ocx, tu as en base de registre un CLSID qui est référencé dans ton projet incorporant ton contrôle ocx, mais qui ne pointe vers rien, d'où le message d'erreur.

Il faut donc que tu compile en mode compatibilité binaire pour conserver la compatibilité (sans devoir recompiler ton projet d'origine : l'exe lui même est compatible avec la nouvelle version de l'ocx), ou en mode compatibilité de projet (à ce moment là, tu es obligé de recompiler l'exe à chaque nouvelle version).

Pour cela, ca se passe dans l'onglet "compilation" de la fenêtre de propriété de ton projet si ma mémoire est bonne.

Bien entendu, le mode de compatibilité binaire est le moins souple pour le versionning : tu es limité à modifier l'implémentation, mais la moindre modification de l'interface de tes classes empêche la compatibilité binaire (ce qui est tout à fait logique).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
la methode manuelle recrire de nouveau
Enfin de comptes j'ai crée de nouveau le control
crée le ocx
dans mon projet ajouter de nouveau le control
dans toutes les forms ou il était placé
pour verifier j'ai modifié le control
et remplqcer l'ocx
quand j'ai réouvert le projet j'ai reçu le messge
ver x of E/DDD/bbb.ocx is not registered the control will be upgrated to ver yy
donc tout va bien
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

Oui, mais si le mode de compatibilité est bien sélectionné, sinon, si aucun mode de compatibilité n'est sélectionné, tu n'as plus qu'à tout refaire à chaque compilation, c'est pour cà que j'insiste sur cà.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
308
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
Est-ce que cette histoire de compatibilité est valable aussi pour les exe activex standalone ?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Salut,

Exactement, tout les activeX, (ocx, dll ou exe) nécessite une compatibilité binaire pour ne pas à avoir à recompiler tout les projets qui en dépendent.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement