Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » DLL Dialog im Projekt aufrufen

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.09.2004, 18:07 Uhr
andy_mann



Hallo Leute,

kann mir jemand helfen ??

Ich habe ein Projet mittels VC C++ .net 2003 als normals Dialog (.exe) erstellt.

Jetzt möchte ich, dass nicht dieses Dialog aufgerufen wird, sondern eine anderes Dialog in dll das ich dem Projekt hinzu gefügt habe.

Dafür lade ich in der InitInstance() die DLL mittels:


C++:
hndlIcmp = LoadLibrary("ansicht.dll");
    if (hndlIcmp == NULL)
    {
        ::MessageBox(NULL, "Could not load ansicht.dll", "Error:", MB_OK);
        // return;
    }



Soweit Funktioniert es auch.

Wie geht es jetzt aber weiter ??

Wie komme ich auf die Funktion, dass er das Dialog anzeigen soll?

Der Grund ist, dass ich mittels DLL die verschiedenen Ansichten austauschen möchte.

Gruß
andy_mann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.09.2004, 18:59 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wenn du es über LoadLibrary machen willst musst du dir einen entsprechenden Funktionszeiger anlegen und diesem dann mit GetProcAddress die Funktion aus der DLL zuweisen.


Hast du die Sourcen der DLL? Wenn ja warum bindest du dann nicht die .lib in dein Project ein und schreibst dir ne Header Datei?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.09.2004, 20:14 Uhr
andy_mann



Ich habe jetzt soviel Durchgelesen und ausprobiert, nichts will irgendwie klappen.

Keine Ahnung was das richtige ist.

Ich möchte zum schluß eine dll haben, die in dem Pfad steht wie meine .exe.

Kannst Du mir eventuell ein Beispiel geben wie man das mit der lib macht ?? Oder wie ich das Dialog in der DLL aufrufe ??

Gruß und Danke....

andy_mann

Dieser Post wurde am 27.09.2004 um 20:22 Uhr von andy_mann editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.09.2004, 20:38 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Zeig mal wie du die Funktionen aus deiner DLL exportierst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.09.2004, 20:45 Uhr
andy_mann



so wollte ich anfangen, funzt natürlich nicht da der aufruf nicht funzt...


C++:
typedef void (__stdcall* CDialogTest)( CDialog* m_pDialogTest );
    HMODULE hInOutP = LoadLibrary( "ansicht.dll" );
    CDialogTest m_pDialogTest = (CDialogTest)GetProcAddress( hInOutP, "CDialogTest" );  




Gruß
andy_mann

Dieser Post wurde am 27.09.2004 um 20:45 Uhr von andy_mann editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.09.2004, 20:55 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Nein nicht wie du sie in deiner Anwendung importierst, sondern wie sie in der DLL exportiert werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.09.2004, 21:11 Uhr
andy_mann



Genau das ist mein Problem...

ich weiss, dass ich normale Funktionen mit


C++:
__declspec(dllexport) dieFunktion();



aufrufen kann.
Aber wie mache ich das mit dem erstellen des Dialoges ??

Gruß
andy_mann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.09.2004, 21:17 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Was genau hast du den jetzt in deiner DLL drin?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.09.2004, 21:32 Uhr
andy_mann



ich habe in meinem Projekt mit dem Asistenten ein MFC-DLL Projekt hinzugefügt.

Dann habe ich wie gewohnt in der Resource ein Dialog hinzu gefügt, dannach eine Klasse von CDíalog abgeleitet.

Sonst nichts, ich wollte eigentlich nur, dass er mir dieses Dialog beim starten mitstartet.

Gruß
andy_mann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.09.2004, 19:05 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du kannst die Klasse ganz einfach wie andere Funktionen exportieren:

Bsp.

C++:
class __declspec(dllexport) classname
{
   classname(){}
   funktion1(){}
}



Um diese dann in einem Programm einzubinden könntest du folgendes in eine Headerdatei schreiben:


C++:
class classname
{
   classname(){}
   funktion1(){}
}



Außerdem mußt du die .lib Datei welche mit der Dll erstellt wird in das Projekt einbinden in dem du die Dll nutzen willst.

Danach kannst du dir ganz normal eine Instanz deiner Klasse anlegen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: