J'ai une fonction statique dans dll qui charge la chaîne à partir de la ressource en utilisant LoadString(). Quand j'appelle cette fonction de cette DLL tout fonctionne bien. Mais lorsque j'appelle cette fonction d'un autre module (contrôle activeX), LoadString échoue avec l'erreur ERROR_RESOURCE_NAME_NOT_FOUND. J'ai essayé avec la macro AFX_MANAGE_STATE mais cela n'a pas aidé. Est-ce que quelqu'un sait ce qui pourrait être un problème ici et quelle est la solution?MFC LoadString dans dll échoue
Répondre
Si la chaîne est dans une ressource de la DLL différente, vous devez définir le handle de ressource de l'autre module pour le faire fonctionner. Essayez de définir le handle de ressource en utilisant la méthode AfxSetResourceHandle.
Je n'utilise pas le handle de ressource (j'utilise LoadString de CString). J'appelle LoadString de la classe/fonction qui appartient à cette DLL. Et puis j'appelle cette fonction de activeX. –
@Aleksandar: Si vous ne passez pas le handle du module dans CString :: LoadString(), il ne cherchera que dans le module courant. Il n'y a pas moyen de contourner cela. – sharptooth
Si vous ne transmettez pas le handle à l'instance du module à LoadString
, il utilise le handle de ressource par défaut. Le handle de ressource par défaut est défini par défaut sur le handle de module en cours. Donc, si vous appelez LoadString
du module qui a la chaîne requise, tout fonctionne bien. Si vous appelez LoadString
d'un autre module, il n'a pas pu trouver la chaîne requise et vous obtiendrez l'erreur ERROR_RESOURCE_NAME_NOT_FOUND
. Vous pouvez le remplacer en appelant la fonction AfxSetResourceHandle
.
Ou vous pouvez explicitement sélectionner le module avec des ressources en passant le handle de ressource à LoadString
.
Veuillez vous assurer que vous appelez AFX_MANAGE_STATE au début d'une fonction afin que les ressources (dll ou exe) appropriées soient chargées. Voir aussi: http://msdn.microsoft.com/en-us/library/ba9d5yh5(VS.80).aspx
- 1. MFC CDialog :: Création échoue
- 2. C++/CLI de l'extension DLL MFC
- 3. Création de ressources dans une DLL pour réutilisation, MFC/VC++
- 4. Link (? Au hasard) échoue avec DLL de débogage de Visual
- 5. CStringList dans MFC
- 6. contrôle OwnerDrawn dans MFC
- 7. Détail grille dans MFC
- 8. enveloppant une application MFC Gui dans une DLL (ou quelque chose d'autre) pour .NET interop
- 9. MFC CSocket dans une bibliothèque statique
- 10. Le chargement de la DLL dynamique échoue avec IOException dans Windows Mobile
- 11. dll C# PInvoke Delphi qui retourne une chaîne échoue dans IIS ne
- 12. Contrôles de redimensionnement dans MFC
- 13. Je veux convertir MFC .exe en DLL qui devrait fonctionner sur IE
- 14. Visual Studio 2008 ne charge pas les symboles de DLL MFC
- 15. Lancement d'une boîte de dialogue C# à partir d'un mfc C++ non géré x dll
- 16. LoadLibrary échoue sous Vista x64
- 17. LoadLibrary échoue lors de l'inclusion d'un fichier spécifique pendant la construction de la DLL
- 18. IXAmlTypeResolver.Resolve échoue dans le mélange
- 19. CSS fusionné échoue dans Firefox
- 20. document.getElementById échoue dans une fonction
- 21. Singleton dans une DLL?
- 22. Comment créer un guid dans MFC
- 23. Création d'une grille de propriétés dans MFC
- 24. boîte de dialogue dans un programme MFC
- 25. Message WM_POWERBROADCAST non détecté dans MFC Dlg
- 26. dans mfc comment implémenter le dialogue ancrable?
- 27. Obtenir Cursors.AppStarting dans Win32 ou MFC?
- 28. Configuration d'un nouveau document dans MFC
- 29. Bitmap XY dans une application MFC
- 30. Comment désactiver le bouton Agrandir dans MFC?
Quelle poignée de module passez-vous dans LoadString()? – sharptooth
Je n'utilise pas la poignée du module explicitement. Par exemple: CString strTmp; strTmp.LoadString (IDS_TEMP); –