2010-09-24 3 views
1

Dans MFC C++, Lorsque nous ajoutons un nouveau resourcein un EXE, dit la chaîne, il va générer un ID automatiquement:Comment éviter l'ID de ressource dupliquée dans différents plugins?

#define ID_SHOW_OUTPUT     10313 

Quand il a un plug-in (DLL) qui a l'ID similaire, elle causera non définie comportement après déclenché.

Pour jouer en toute sécurité, j'ai essayé de définir mon propre ID privé:

#define ID_SHOW_OUTPUT   (WM_APP+6) 

Cependant, je vais avoir beaucoup de travail s'il y a des centaines de ressources dans l'EXE et DLL.

Je ne suis pas sûr qu'il existe une meilleure solution et la prévention sur l'ID de ressource en double à travers les exécutables ???

+0

Quels problèmes rencontrez-vous? Avoir des ID de ressource en double dans différents modules est parfaitement normal. – Luke

Répondre

4
  • Vérifiez this add-in. Il vous donne un meilleur contrôle sur les identifiants de ressources. Comme l'a commenté Luke, il ne devrait pas y avoir de problèmes d'utilisation de DLL avec des identifiants de ressource en double. Un seul module de ressource est actif à la fois en utilisant AfxSetResourceHandle

  • Définition des ID de commande à l'arbitraire UINT valeurs (Dans votre question vous avez attribué WM_APP + 6 à un ID de commande) n'est pas sûr car ces valeurs sont interprétées par MFC dans de nombreux endroits. Consultez la question this StackOverflow pour plus de détails.

+0

Le ResOrg recommandé est en effet un outil cool. Ce sera parfait s'il est capable de charger plusieurs Resource.h, depuis exe et dlls dans le même processus ... Avez-vous vu ce genre d'outil? – wengseng

Questions connexes