DLL und SDI
-
Ich habe eine SDI Anwendung jetzt will ich daß der User merere Dialoge bzw. Form in einem SDI abrufen.
So weit so gut, aber jetzt möchte ich die Form nicht alle in einem Projekt haben sondern in verschiedenen.
Kann man die als DLL machen und wenn ja dann natürlich wie was muß man da beachten ???
-
Also ich erstelle eine MFC-DLL dann erstelle ich ein Form und so versuche ich es zu rufen:
extern "C" __declspec(dllexport) void GibWindow()
{
TestForm *Form = new TestForm;
Form->DoModal();
delete Form;
}
jedoch dann kriege ich Fehler
estForm::TestForm" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "TestForm" erfolgte
: Siehe Deklaration von 'TestForm::TestForm'
: error C2039: 'DoModal' : Ist kein Element von 'TestForm'
: Siehe Deklaration von 'TestForm'
: error C2248: "TestForm::~TestForm" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "TestForm" erfolgte
: Siehe Deklaration von 'TestForm::~TestForm'
-
Dein Ctor ist protected. Mach ihn public.
-
Also wenn ich in public mache dann geht’s aber nur bis hier
TestForm * Form = new TestForm;Denn meine Klasse ist von CFormView abgeleitet. Die kann ich nicht mit DoModal anzeigen.
Weist wie kann ich die sonst anzeigen bei Form
-
Create oder CreateEx...
Aber gibt man die Formview nicht bei AddDocTemplate an?
-
Ich weis es ist viel aber irgendwie komme ich nicht weiter deswegen es wehre super nett wenn mir jemand ein kleines Beispiel geben konnte oder aber einfach par source zahl wie ich es in DLL und SDI abrufen soll
Vieeelen Dank
-
es müß doch jemand so ein Beispiel haben - oder????
-
Also ich versuche noch einmal, vielleicht habe ich mich jetzt besser ausgedruckt
Ich erstelle eine MFC DLL da erstelle ich ein Dialog oder Formansicht ( CformView) und so rufe ich es ab in DLL:
// Ruft Dialog auf
extern "C" __declspec(dllexport) void GibDialog()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
TMDialog *pdialog = new TMDialog;
pdialog->DoModal();//Create( IDD_DIALOGTM, pdialog);
delete pdialog;
}
im SDI Anwendung in der View.h deklariere bzw rufe ich DLL so:
extern "C" __declspec(dllimport) void GibDialog();
und in der cpp so:
void CGFSCORPUS1View::OnModuleGfsfido()
{
GibDialog();
}
ich kriege auch keinen Fehler plus nur bei ausführe bei der Methode DoModal(); bleibt er stehen ;-((
-
AFX_MANAGE_STATE(AfxGetStaticModuleState());
Form form;//(AfxGetMainWnd());
form.Create(form,IDD_FORMVIEW);
also so rufe ich in DLL die Create() Funktion auf, und solche Fehler kriege ich:
error C2660: 'Create' : Funktion akzeptiert keine 2 Parameter
wer kann mit Helfen ???
-
Schau mal auf meine Website http://unixtom.gu1.info
Habe dort eine Projekt welches einen Dialog erportiert.