Gewusst wie: hinzufügen von MFC-Unterstützung zu bestehenden Win32-C++ - Projekt?
Ich bin erstellen einer C++ - Anwendung, die Qt zum erstellen der GUI. Jedoch, ich müssen mit einem Drittanbieter-Bibliothek, die basiert auf MFC (für CString s, etc). Gibt es trotzdem, zum hinzufügen von MFC auf meine Bewerbung, mir zu erlauben, verwenden Sie diese Bibliothek, oder muss ich das umschreiben, dass es mich?
Sah ich diese Frage, aber es tut mir nicht sagen, wie Sie zum hinzufügen von MFC-manuell zum Projekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Bibliothek-app nimmt/gibt/setzt CStrings, die Sie benötigen wird die Verknüpfung mit der MFC-libs, oder haben die MFC-libs schon statisch gelinkt.
Wenn Sie mithilfe von Visual studio können Sie einfach überprüfen, "verwenden von MFc in static/shared lib" als angemessen, es doesn;t auf Ihre Anwendung auswirken, GUI, solange Sie halten Ihr Aktuelles Programm-Einstiegspunkt.
Wenn es nur für die CString (und vielleicht einige andere utility-Funktionen), könnten Sie besser sein, von der Suche nach Ersatz. Es gibt durchaus ein paar schwimmende rund um das internet.
Beispielsweise diese CString Umsetzung
Es wäre viel einfacher, wenn Sie finden einen Ersatz von dem Dritten MFC-Bibliothek.
Die Drittanbieter-Bibliothek, die statisch oder dynamisch gelinkt, würde eine MFC-version, die ist genau die gleiche version wie die, die zum kompilieren des Dritten lib-Datei. MFC-Klassen sind nicht Binär-kompatibel zwischen den Versionen und auch nicht Binär-kompatibel sind zwischen den Konfigurationen (statisch/dynamisch mit MFC & CRT -, single - /multiple-threaded CRT -, debug, release, X86, X64, MBCS, UNICODE, etc.) von der gleichen version.
Wenn du CString::LoadString oder irgendetwas anderes, das den Zugriff auf die MFC-Modulstatus es würde eine Globale CWinApp. Eine einfache Möglichkeit, um es zu bekommen ist das erstellen einer regulären DLL. Hinzufügen eines deiner QT-Projekt erfordern würde, Sie zu bewegen, code aus Ihrer vorhandenen entry-Funktion InitInstance und ExitInstance.
Ja, Sie können mit MFC, indem Sie es in Ihre Compiler-und Linker-Optionen. Wenn Ihr einziger Grund ist, weil die Drittanbieter-Bibliothek, dann werden Sie wahrscheinlich wollen, zu verzichten, MFC-Funktionen in Ihrem code. So, wenn Sie jemals ersetzen die Drittanbieter-Bibliothek können Sie ausschalten, MFC.
Wenn die vorhandene Windows-Programm verwendet eine nachrichtenschleife (anstelle der separaten event-Handler verwendet, die von MFC) können Sie eine Unterklasse eines Fensters auf welcher Ebene auch immer Sie brauchen, um zu verarbeiten, dass die message-loop und überschreiben der WindowProc-Funktion.
Zum Beispiel, ich habe ein Win32-Programm und embedded es Hauptfensters in ein CStatic-Bild-Fenster durch ersetzt die WindowProc des Unterklassen-CStatic. Die Funktionalität des Programms wurde innerhalb der CStatic, aber ich könnte noch andere MFC-Steuerelemente und Paradigmen in die umgebende Grenze.
Hinzufügen von MFC-Unterstützung zu Integra folgende änderungen sind erforderlich :