MFC-basierter Dialog in einem nicht MFC-Programm?

Hallo!

Wie kann man einen MFC-basierter Dialog in einem nicht-MFC-basierten Programm aufrufen?

CTestDialog tDialog;
tDialog.DoModal();

Das obige Beispiel, zum Beispiel, führt zu Speicherfehlermeldungen, und das Dialog mit Create(…) aufzurufen führt zum selben Fehler!

Was gibt es da zu beachten???

Ciao and a realy good weekend!
Catmad

Im Buch Visual C++ 6.0 von Markt und Technik ist das Beschrieben. Die rufen dort auch Standarddialoge auf in einer Nicht-MFC-Anwendung auf. Allerdings nehmen die nicht die MFC Standarddialogvorlagen, sondern die ohne MFC. Im Buch ist sogar ein Beispiel.

Ein kleiner auszug daraus:

OPENFILENAME ofn;

memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
GetOpenFileName(&ofn);

HAllo!

Nicht-MFC-Anwendung auf. Allerdings nehmen die nicht die MFC
Standarddialogvorlagen, sondern die ohne MFC.

Richtig, denn

Im Buch ist
sogar ein Beispiel.

Ein kleiner auszug daraus:

OPENFILENAME ofn;
[…]

Hierbei handelt es sich um einen Common Dialog, was eigentlich nix anderes ist, als ein vorgefertigter Dialog, der komplett mit Win-Api-Mitteln in der commdlg32.dll zu allgemeinen Verwendung bereitgehalten wird.

Desshalb hat das auch nichts mit MFC zu tun (weitere Infos im MSDN unter:
Plattform-SDK/User Interface Services/User Input/Common Dialog Box Libary).

Leider kenne ich mich mit der MFC nicht so toll aus, aber einen einzelnen MFC-Dialog in eine API-Anwndung einzubinden dürfte an sich sehr aufwendig sein, da die MFC die (fast) komplette WIN-API in einen eingenen Framework kapselt (incl. Nachrichten-Verarbeitung). Somit wäre es wohl einfacher dann gleich die komplette Applikation mit MCF zu Coden…

HTH,
Jo

Hallo,

pack den Dialog in eine eigene DLL! Da legst Du dann die MFC Application an und kannst dann auch Dialoge aufrufen! Die Arbeit nimmt die VC ab, wenn du für die Erstellung den Wizard nimmst…
Die DLL linkst du einfach an dein bestehendes Projekt an - so haben wir OWL und MFC unter einem Hut gebracht!

Mfg. Frank