*gelöst* MFC Funktionen in statischer Bibliothek
-
Hallo
Ich bin noch recht neu hier und auch noch nicht so fit in Bezug auf MFC. Hoffe aber ihr habt etwas Geduld mit mir und könnt mir eventuell helfen.Ich habe mir eine "lib" geschrieben, die mir die CFileDialog Funktion bereitstellt, und die ich in eine DLL einbinde.
Hatte vorher die CFileDialog Funktion in einer Konsolenanwendung. Da lief alles super. Seit dem sie aber jetzt in der "lib" steckt ist der Wurm drin.
Wenn ich die Funktion aufrufe, öffnet sich zwar der Dialog, aber die "Filter-Strings" werden nicht korrekt dargestellt. Es erscheint nur eine Ansammlung "wilder Zeichen". Wie bekomme ich es jetzt hin, dass meine Filter Strings korrekt dargestellt werden? Was mache ich falsch?#include "stdafx.h" #include "mfc.h" #include "afxwin.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif using namespace std; namespace Edl { CString OpenEdl::OpenEdlFile() { CString path; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; } else { CFileDialog fileDlg(TRUE, "edl", "EDL", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "EDL Files (*.edl)|*.edl||"); if(fileDlg.DoModal ()==IDOK) { path = fileDlg.GetPathName(); } } return path; } }Kann leider immo kein Bild dazu posten. Ich reiche es aber nach.
Vielen Dank schon mal.
-
Haben beide Projekt (EXE und LIB) identische Einstellungen für die MFC. Also wird in beiden Fällen die MFC als DL-Version oder als statische LIB gebunden?
-
Ich habe den Code 1:1 übertragen und der Dialog öffnet sich ja auch. Das Problem ist die Formatierung im "Dateiname" und "Dateityp" Feld.
-
*link entfernt*
-
Kann es sein, das die Unicode Einstelungen Deines projektes unterscheidlich sind und Du einige Warnungen ignoriert hast?
-
*Gelöst*
Vielen Dank für den Hinweis. Ich hatte tatsächlich "/D "_UNICODE" und
/D "UNICODE" in den Compileroptionen für die "lib" vergessen. Für die dll war es eingetragen. Jetzt wird alles richtig angezeigt.