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
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)
la déclaration de la procédure appelée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
erc SetFormAligner( TFormMemoriaAligner Form );
et l'implémentation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
__declspec (dllexport) erc CMenuToolbarManager::SetFormAligner(TFormMemoriaAligner Form)
{
   pFormMemoriaAligner = Form;
}
le compilateur me dit ) attendue !!!
une alternative pour moi serait de récupérer la valeur de Application qui est connu dans le main
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;
}
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
 
__declspec (dllexport) erc CMenuToolbarManager::SetApplication( Application )
{
   Application->CreateForm(__classid(TFormMemoriaAligner), &FormMemoriaAligner);
}
comment s'en sortir, l'une ou l'autre des solutions permettrai d'arriver au résultat
j'ai essayé plusieurs approches sans succès