Bonjour,
Je suis amené à migrer l'ihm d'une application dans une DLL
J'ai une form qui est crée dans l'application principale et utilisée dans la dll
J'ai donc codé un setter pour passer cette valeur
Malheureusement le compilateur refuse mon type;
le vous donne le code appelant, et la procédure appellée
la déclaration de la procédure appelée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Create the application main window Application->CreateForm(__classid(TFormMemoriaAligner), &FormMemoriaAligner); objMenuToolbarmanager.SetFormAligner( FormMemoriaAligner); if (objMenuToolbarManager.ActivateItemsAndButtons(&sVectorMenuItems) != INIT_NO_ERROR)
et l'implémentation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 erc SetFormAligner( TFormMemoriaAligner Form );
le compilateur me dit ) attendue !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 __declspec (dllexport) erc CMenuToolbarManager::SetFormAligner(TFormMemoriaAligner Form) { pFormMemoriaAligner = Form; }
une alternative pour moi serait de récupérer la valeur de Application qui est connu dans le main
et dans ce cas je transformerai le setter comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { CSoftwareManager * pObjSoftwareManager; try { pObjSoftwareManager = new CSoftwareManager; bool bMMImode = true ; Application->Initialize(); if (INIT_NO_ERROR != pObjSoftwareManager->Initialization(bMMImode)) { delete pObjSoftwareManager; return 1; } delete pObjSoftwareManager; objParserManager.InitParserManager( 2); Application->Title = "ALIGNER"; Application->CreateForm(__classid(TFormMemoriaAligner), &FormMemoriaAligner); Application->Run(); } catch (Exception &exception) { delete pObjSoftwareManager; Application->ShowException(&exception); } catch (...) { delete pObjSoftwareManager; try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; }
comment s'en sortir, l'une ou l'autre des solutions permettrai d'arriver au résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 __declspec (dllexport) erc CMenuToolbarManager::SetApplication( Application ) { Application->CreateForm(__classid(TFormMemoriaAligner), &FormMemoriaAligner); }
j'ai essayé plusieurs approches sans succès
Partager