# MFC Dialog in DLL importieren ?



## haemmer (14. Januar 2004)

Ich habe ein fertiges MFC Dialog Projekt. 

Diesen Dialog möchte ich in eine in eine statische MFC DLL einfügen. 
Die DLL existiert noch nicht.

Ich denke folgendes vorgehen führt zum Ziel
1. Mit dem MFC-Anwendungs -Assistenten (dll)  eine „Erweiterund MFC-DLL ( nur mit anderen MFC-Anwendungen ) gernerieren.

2. und dann die Klassen des Dialoges in die DLL zu kopieren.

Aber wie ist es mit den Ressourcen? 
Und was muss man hinein kopieren? 
Kennt jemand ein Beispiel wie man das macht. 

Danke Markus


----------



## basd (16. Januar 2004)

Die Richtung ist schonmal gut du kopierst dann nochmal die Resource mit in das DLL Projekt und musst dann in der Dialog Klasse den Eintrag enum { IDD = NAMERESOURCE} ändern in etwa int IDD ; und im Konstructor den Wert IDD = NAMERESOURCE setzen , entsprechend auch an die Basisklasse übergeben,.
Wenn du das nicht machst müsstest du jedesmal die Resource mitziehen was ja blöd ist.
Jetzt kannst du die Dialogklasse exportieren (gibts ein Makro für um Klassen aus einer DLL zu exportieren) und Fertig.
Dll einbinden und ab gehts ! Neues Objekt des Dialogs mit new erstellen und schon gibts keine Probleme mehr.
Hab ich sogar vor paar Tagen selber ausgeknobelt.
Also viel Erfolg und Spaß noch !


----------



## QXV (4. April 2005)

Hallo Markus, basd
könnt ihr mir weiterhelfen ?
ich habe das gleiche Problem  mit den Resourcen von DLL. Was soll ich machen, damit meine Klient Anwendung (SDI) auf die Resourcen von DLL zugreifen kann ? ich bin wie Markus vorgegangen. Also MFC Dialog erstellen , in das leere DLL kopieren, kompieren  usw..  Trotzdem kann der Klient nicht auf die Resourcen des Dlls zugreifen. Der Klient hat ja eigene Resourcen und kann mit zwei Resourcen.h nicht anfangen.

Markus, hast du Erfolg mit dem DLL Projekt? kannst du mir deine Dateien schicken ? 

Gruß

Q


----------



## haemmer (4. April 2005)

erlich gesagt,habe ich es damals richtig geübt. 
Aber so hat geklappt.

Ich bin folgendermassen vorgegangen 

1. make this : http://www.htbasic.com/MFCDLLInstructions.htm
2. Mache deinen Dialog 
3. Code hineinkopieren.   

Ich hoffe das hilft dir weiter 

Gruss Markus 


und vergesse nicht 
 AFX_MANAGE_STATE(AfxGetStaticModuleState());  // this is for MFC 
in den DLL Methoden 

Beispiel 
DLL side 
void Optimize(std::list<SHCrec>& li_SHCrec)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());  // this is for MFC 
  .. dein code 

}


Links 
http://www.codeproject.com/wtl/SDIViewWTLDLL.asp?target=DLL|Dialog
http://www.htbasic.com/MFCDLLInstructions.htm
http://www.mindcracker.com/mindcracker/c_cafe/dll/extn_dll_dlg.asp


----------



## QXV (5. April 2005)

Hallo Markus,

Es hat wunderbar geklappt. Ich kann nun meine Erweiterungs -DLLs in die Klient Anwendung einbinden und aufrufen. Vielen Dank für deine Tips und nützliche Links.  Beim nächsten Projekt  werd ich mich mit der regulären DLLs beschäftigen. Falls du noch weitere Tips hast ! ich würde mich sehr freuen.

Gruß

Q


----------



## QXV (11. April 2005)

Hilfe,
mein Klient Programm stürzt ab, wenn ich die Funktion einer DLL (regulär) aufrufe. Was mache ich falsch ? Die Kompilierung der DLL war problemlos und fehlerfrei.
kann jemand mir weiterhelfen.  Danke voraus

Gruß 

Q


----------

