MFC-Klasse aus Typbibliothek in CLR-Projekt einbinden



  • Hallo zusammen,

    ich komme eigentlich aus der C++ Builder Welt und kenne mich mit CLR und Co nicht so richtig aus.

    Ich benötige in meinen Projekt eine COM Komponente die eine MFC- Klasse ist. Wie kann ich diese Klasse in mein CLR- Projekt einbinden?

    Danke für eure Hilfe im voraus.



  • kingvik387 schrieb:

    Ich benötige in meinen Projekt eine COM Komponente die eine MFC- Klasse ist. Wie kann ich diese Klasse in mein CLR- Projekt einbinden?

    Also unter "Projekt->Klasse hinzufügen" kann man das eigentlich machen ob das auch für die "COM-Komponente" (was ist das?) gilt, weiß ich nicht!



  • Das ist ja das Problem, wenn ich über "Projekt->Klasse hinzufügen" die MFC-Klasse importieren möchte bekomme ich die Fehlermeldung: "MFC-Klasse kann nur in MFC-Projekt verwendet werden".



  • kingvik387 schrieb:

    Das ist ja das Problem, wenn ich über "Projekt->Klasse hinzufügen" die MFC-Klasse importieren möchte bekomme ich die Fehlermeldung: "MFC-Klasse kann nur in MFC-Projekt verwendet werden".

    Dazu kann ich leider nichts sagen (bin ein Noob) aber ich habe in der Hilfe folgendes gefunden: (Suchwörter: "Klasse hinzufügen COM")

    http://msdn2.microsoft.com/de-de/library/1zb9t6z7(VS.80).aspx (das geht ja aber nicht!)

    Hinzufügen einer MFC-Klasse aus einer Typbibliothek
    http://msdn2.microsoft.com/de-de/library/fe06teee(VS.80).aspx (da habe ich keine Ahnung!)

    Ich hoffe das es dir weiterhilft sonst werden dir bestimmt einige Profis helfen/antworten können.



  • Danke für deine Hilfe, aber das Problem ist, das ich diese Typbibliothek in einem CLR- Projekt benötige. Der Fehlermeldung zufolge ist dies wohl nicht direkt möglich. Ingendeinen Weg muss es doch trotzdem geben. Ich bin extra wegen dieser COM Komponente vom Borland Builder auf das VS umgestiegen, zumindest habe ich das vor.



  • Wenn du die Bibliothek als dll vorliegen hast, dann kannst du diese Importieren und verwenden. Muss man zum Beispiel machen, wenn man in Windows Forms auf die Konsole zugreifen will.
    Dazu macht man einen public Aufruf:

    [DllImport("KERNEL32.DLL",EntryPoint="AllocConsole",SetLastError=true,
         CharSet=CharSet::Unicode,ExactSpelling=true,
         CallingConvention=CallingConvention::StdCall)]
    	static bool AllocateConsole();
    

    Jetzt werden alle Aufrufe der Methode "AllocateConsole()" auf die Funktion "AllocConsole()" in der "Kernel32.dll" umgeleitet. Evtl. geht es ja mit dem Konstruktor deiner Klasse genauso. Ich weiß jedoch nicht, ob dies dann als managed auch laufen wird.



  • Die dll hab ich, aber ich kenn die Einsprungspunkte nicht. Zudem ist dies keine "normale" dll, sie beinhaltet ein COM- Interface mit Ereignissen. Ich brauch also dei Import- Funktion von VS.


Log in to reply