Mit managed C++ gekapselte MFC- DLL - kann mir jemand helfen?



  • Hallo Experten,

    ich habe folgendes Problem:
    Ich habe eine MFC- Erweiterungs-DLL. Um die zentrale Klasse habe ich eine verwaltete Wrapper- KLasse gebaut und kann damit die DLL sowohl in einer .NET- Applikation verwenden, als auch in meiner früheren MFC- Applikation verwenden.
    Das funktioniert auch wirklich gut, und ich kann es debuggen. Schon weit drinnen im unverwalteten MFC- Code, kommt die Funktion an die Stelle, an der ein bereits mit new erstellter Dialog mit ::Create() kreiert werden soll...

    // ParameterDialog schon mal kreieren, aber nicht anzeigen 
        if (m_pMVParameterDlg->GetSafeHwnd()==0)//NEIN- > dann Dialog kreieren 
        { 
            // Es werden Initialisierungen für den Dialog vorgenommen. 
            // Z.B. erhält er einen Zeiger auf DIESE KLasse. 
            m_pMVParameterDlg->DialogInitialisieren(this, m_pParamSet); 
            m_pMVParameterDlg->Create(IDD_MVPARAM_SET); 
            m_pMVParameterDlg->AktualisiereDialogCtrls(); 
    
            HideMVParamDefDlg(); 
        }
    

    In ::Create steigt meine DLL dann aus, wenn ich Sie in der .NET- Applikation lade. Rufe ich die selbe DLL mit meiner MFC- Applikation auf, funktioniert das ::Create() wie immer.
    Beim Parallelen Debuggen beider Varianten in die Tiefe der MFC (CDialog::Create) stelle ich fest, dass der Abflug bei
    hinst = AfxGetRessourceHandle();
    passiert, ohne, dass vorher für mich sichtbar Variablen unterschiedlich waren.

    Ich kann mir das Problem nur so erklären, dass in der erfolgreichen Konstellation die MFC- Applikation Teile der MFC schon initialisiert hat, die dann auch der MFC- DLL zu Verfügung stehen. Wohingegen die .NET Applikation natürlich nichts vom MFC initialisiert und in jedem Fall die MFC- DLL alle Initialisierungen machen müsste.

    Hat hier jemand einen zielführenden Rat für mich.
    Vielen Dank im Voraus!

    PS: Sorry, das Problem liegt auf der Grenze zwischen dem MFC und diesem Forum, deshlab habe ich den Beitrag in beiden gepostet. Ich hoffe, das ist OK?


Anmelden zum Antworten