Bonjour à toutes et à tous !
Voilà ça fait deux jours que je lis la doc et que je brasse des tonnes d'exemples donc je me dis que enfin je dois avoir le droit de poser la question. C'est une question que j'ai vu posée pas mal de fois mais les réponses n'ont pas été d'une grande aide.
Donc mon projet repose sur le développement d'une application. Comme je l'ai écrit dans le sujet, il s'agit d'une Dll qui sera chargée depuis un éxécutable quelconque. Je veux que la Dll charge une application MFC de type MDI.
ce que je fais pour l'instant :
1. CMyApp * theApp ; // dérivée de CWinApp of course, objet global
2. le point d'entrée (extern C etc.) de la Dll fait :
theApp = new CMyApp() ;
theApp->InitInstance() ;
je suis passé par une fonction externe et un pointeur parceque quand je déclarais theApp en tant que CMyApp et que je loadais la Dll, ça allait bien dans la constructeur mais pas dans InitInstance().
Cela étant dit, même si j'y arrive, je ne m'en sors pas.. le debug me sors toujours un plantage sur telle ou telle assertion :
ASSERT(afxCurrentInstanceHandle != NULL);
ou encore :
ASSERT(afxCurrentInstanceHandle == m_hInstance);
j'ai essayé les trucs les plus souvent recommandés :
AFX_MANAGE_STATE(AfxGetStaticModuleState());
au tout début de ma fonction externe (le point d'entrée de la Dll)
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)
histoire de voir si ça marcherait pas au cas où..
ou encore :
AfxRegisterWndClass(..)
Donc voilà en gros j'arrive pas à lancer une appli MDI à partir d'une DLL, sachant que l'éxécutable qui la chargera ne devra rien avoir à voir là dedans.
Bon et bien j'espère que quelqu'un va sourire et se dire "mon dieu le problème est bien connu" et me donner la réponse, parceque là je stagne
désolé si je ne suis pas très clair, je suis conscient d'avoir le nez dans mon programme, n'hésitez pas à me demander des explications
A bientôt !
totem, qui croise les doigts
Partager