OVH Cloud OVH Cloud

Constantes dans les librairies

4 réponses
Avatar
JM
Bonjour

Je voudrais faire une libraire dont un de mes contrôles contient un truc
du genre :

ON_COMMAND(ID_BLABLA,Onblabla)

Le problème, c'est que ID_BLABLA est défini dans les ressources de
l'application qui utilisera cette librairie.
Si je mets un UINT, ça compile pas.

Donc lorsqu'on veut utiliser, dans une librairie, des ressources
(principalement les constantes qui les définissent) qui seront définies
ultérieurement, comment fait-on?

merci

4 réponses

Avatar
JM
Finalement, j'ai peut-etre trouver

Faire un premier fichier "libresource.h" contenant les ID de la librairie.
Puis l'inclure dans l'application principale.

Mais est-ce que cela évite les conflits d'ID?

Merci
Avatar
Vincent Burel
"JM" wrote in message
news:44ad13b4$0$865$
Bonjour

Je voudrais faire une libraire dont un de mes contrôles contient un truc
du genre :

ON_COMMAND(ID_BLABLA,Onblabla)

Le problème, c'est que ID_BLABLA est défini dans les ressources de
l'application qui utilisera cette librairie.
Si je mets un UINT, ça compile pas.



Généralement ID_BLABLA n'est pas une constante mais un #define qui peut être
utilisé par votre application aussi bien que par vos diverses librairies
(suffit d'include le header contenant ces #define).

Sinon généralement on exporte pas les constantes ou des variables (dans une
lib comme dans un DLL), on préfèrera user d'une fonctions pour se
communiquer, d'un module à l'autre (lib, dll, mais même d'un module 'c' à un
autre), les valeurs, les structures et pointeurs dont on a besoin...

VB
Avatar
JM
Vincent Burel a écrit :

Généralement ID_BLABLA n'est pas une constante mais un #define qui peut être
utilisé par votre application aussi bien que par vos diverses librairies
(suffit d'include le header contenant ces #define).



Quand je parlais de "constante", je pensais effictivement #define.
Le problème qui se pose, c'est l'incompatibilité entre divers ID dans
les ressources
Avatar
Vincent Burel
"JM" wrote in message
news:44ad2b58$0$826$


Vincent Burel a écrit :

> Généralement ID_BLABLA n'est pas une constante mais un #define qui peut


être
> utilisé par votre application aussi bien que par vos diverses librairies
> (suffit d'include le header contenant ces #define).

Quand je parlais de "constante", je pensais effictivement #define.
Le problème qui se pose, c'est l'incompatibilité entre divers ID dans
les ressources



il faut s'organiser et faire attention que les resources d'une DLL sont
indépendantes de celle de l'appli qui l'utilise (les HMODULE-dll sont
différent du HINSTANCE-app) à moins qu'il y ait moyen de gérer les resources
des uns et des autres en se comuniquant les bon hinst... beueuerk :-)

Si une DLL doit utiliser les mêmes ressources qu'une appli, c'est
généralement plus simple de communiquer directement à la DLL (via une
fonction) un ou plusieurs handle sur du BITMAP, FONT, ICON etc... plutot que
d'imaginer un tron commun qui va limiter la portabilité de cette librairie
et surement poser des problème de compatibilité un jour ...

VB