Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » ImageList aus DLL exportieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.10.2004, 10:41 Uhr
~Suchender
Gast


Hallo,
ich habe mehrere Programme die alle die gleiche ImageList verwenden. Somit gibt es in jedem Programm eine Kopie der ImageList. Ich würde nun gern diese ImageList in ne DLL packen/exportieren und erst zu Laufzeit in die ImageList des jeweiligen Programms laden.
Hat jemand ne Idee wie ich das bewerkstelligen kann?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.10.2004, 22:01 Uhr
~Reyx
Gast


Hallo,
du erzeugst einfach in der DLL die ImageList via VCL und schreibst dann eine Funktion (ebenfalls in die DLL), die die ImageList "returned". Diese rufst du dann einfach vom Programm aus auf, nachdem du die DLL im- oder explizit geladen hast.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.10.2004, 08:21 Uhr
~Suchender
Gast



Zitat von ~Reyx:
Hallo,
du erzeugst einfach in der DLL die ImageList via VCL.

Könntest du mir bitte noch sagen wie ich das genau machen muss?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.10.2004, 15:41 Uhr
~Reyx
Gast


Also,
ich hoffe, ich bekomme jetzt so hin...

Im BCB erzeugst du eine neue DLL (Datei->Neu...->DLL), dann mit "Datei->Neues Formular" ein neues Formular erzeugen (ist glaube ich auf diese Weise die einfachste...).
Auf diesem Formular erstellst du dann wie gewohnt die ImageList, so, wie du sie haben möchtest.

Falls du noch mehr brauchst:
Danach schreibst du eine Funktion die aus der DLL exportiert wird und die eben erstellte ImageList returned, sollte in etwa so aussehen:

C++:
TImageList load_image_list()

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.10.2004, 15:48 Uhr
~Reyx
Gast


Sorry, vertippt (Enter)...
also, sollte ungefäht so aussehen:

C++:
TImageList __declspec(dllexport) load_image_list()   {
     return Form1->ImageList1; //hier halt deine ImageList...
}



dann lässt du die DLL implizit btw. explizit laden (implizit ist etwas einfacher).
Also jetzt in der EXE:
"Projekt->Dem Projekt hinzufügen->Library", hier die .lib Datei angeben, die beim kompilieren der Dll enstanden ist. Anschließend im Programm:

C++:
__declspec(dllimport) TImageList load_image_list();
void __fastcall Form1OnCreate(TObject *Sender /* oder so ähnlich */)     {
     //Hier die Imagelisten einander zuordnen, das sollte kein Problem sein.
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.10.2004, 16:59 Uhr
~Suchender
Gast


Erstmal danke für die Antwort. Bei:


C++:
TImageList __declspec(dllexport) load_image_list()  
{
     return Form1->ImageList1;
}



erhalte ich den Fehler das Klassen im VCL-Stil mit dem Operator new erstellt werden. Hab es also mal mit nem Pointer (TImageList* __declspec...) probiert doch erhalte ich dann beim Aufruf im andere Program ne Zugriffsverletzung beim Aufruf von load_image_list(). Hast du ne Idee woran es liegt bzw. wie ich die new-Sache umgehen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.10.2004, 22:31 Uhr
~Reyx
Gast


Hallo,
Versuch's mal mit

C++:
TImageList __declspec(dllexport) load_image_list()  
{
     TForm1* Form1 = new TForm1(0);
     return Form1->ImageList1;
}



Ist zwar vom Code her nicht ganz korrekt, sollte aber vorerst klappen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: