[solved] Grenze zwischen ATL und MFC?



  • Hallo,

    ich finde den genauen Link jetzt gerade nicht mehr, aber auf msdn hab ich gelesen, ein Vorteil von ATL wäre die Möglichkeit, eine Applikation/Library schlank zu halten, da keine riesige mfc.dll mitgeliefert werden muss.

    Nun wundere ich mich, warum in einem vom Wizard erstellten neuen ATL-Projekt in Configuration Properties -> General "Use of MFC" auf "Use MFC in a Shared DLL" steht, anstatt auf "Use Standard Windows Libraries" und warum "Use of ATL" auf "Not Using ATL" gestellt ist. Ist das nicht ein *wenig* widersprüchlich? Egal, welche Einstellungen ich wähle, mein Control wird kompiliert.

    Ausserdem kommt mir vor, als würde jede beliebige Kombination der beiden genannten Einstellungen funktionieren. Drehe ich beide ab, geht's genauso. Was ist denn da los?

    Und weiß jemand, wie ich sicherstelle, dass ich ausschließlich ATL, und keine MFC verwende? Damit ich dem Benutzer meines Controls eben *keine* mfc.dll zur Verfügung stellen muss? (Oder wie auch immer der dann dazu kommt.)


  • Mod

    Solange Du keine MFC Funktionen verwendest und keine MFC Header includest wird auch keine MFC verwendet. Egal was DU da einstellst.

    Diese Schalter geben nur an wie die MFC verwendet wird (als DLL oder static lib), wenn sie verwendet wird.

    BTW: Wenn Du Dein Programm stzatisch linkst wird es auch mit der MFC nicht sonderlich groß.
    Und nur um Platz zu sparen würde ich nicht aufdie MFC verzichten...



  • Martin Richter schrieb:

    nur um Platz zu sparen würde ich nicht aufdie MFC verzichten

    Ist denn MFC der ATL überlegen? Dauernd lese ich, dass man heutzutage lieber ATL bevorzugen soll..? (Allerdings kenne ich den Grund dafür nicht.)


  • Mod

    iko79 schrieb:

    Martin Richter schrieb:

    nur um Platz zu sparen würde ich nicht aufdie MFC verzichten

    Ist denn MFC der ATL überlegen? Dauernd lese ich, dass man heutzutage lieber ATL bevorzugen soll..? (Allerdings kenne ich den Grund dafür nicht.)

    Der Hammer ist dem Schraubenzieher überlegen, wenn es darum geht Nägel in die Wand zu bekommen...

    ATL ist der MFC im COM Bereich überlegen.
    Im GUI Bereich ist die MFC der ATL überlegen.

    Was willst Du tun?

    Ich benutze meistens beides, oder nur das eine oder nur das andere... 🤡



  • Ja, also ich kenne die ATL hauptsächlich unter dem Vorwand, einfach ActiveX-Komponenten entwickeln zu können. Dafür wurde es denke ich auch ursprünglich entwickelt, was auch der Name vermuten lässt.



  • Danke für die Antworten!

    Mein Control ist eher weniger Grafik-lastig. Jedenfalls was Grafik mittels GDI angeht. Ich brauche allerdings Eingabe-Erkennung (Mouse, Keyboard). Wäre es in dem Fall nicht besser ATL/WTL zu verwenden?

    Frage am Rande: Wird WTL eigentlich mit MSVC schon mitgeliefert? In dem Fall verwende ich sie ja eventuell schon zum Teil, ohne es zu wissen... Wie ihr vll meinen früheren Posts (alleine den Titeln schon) entnehmen konntet fällt es mir ganz schön schwer, die Grenzen zwischen MFC, ATL, WTL, COM, Win32 und was es da noch so alles gibt zu ziehen. Ein vernünftiges Nachschlagewerk hab ich nicht, darum klaub' ich mir alles aus Google und MSDN irgendwie zusammen, was dem Verständnis natürlich nicht besonders förderlich ist.



  • Die WTL wurde schon lange bei MS entwicklunstechnisch eingestellt und in die OpenSource-Gemeinde überführt. Ergo wird das nicht mit dem VS ausgeliefert. Wenn du da eine aktuelle Version wilst, dann schau einfach bei sourceforge vorbei.


  • Mod

    Also die MFC liefert Dir nicht viel Unterstützung bei der Grafikarbeit, außer eben ein paar Wrappern.



  • Jetzt muss ich aber nochmal blöd fragen: Widerspricht sich das

    Martin Richter schrieb:

    Also die MFC liefert Dir nicht viel Unterstützung bei der Grafikarbeit, außer eben ein paar Wrappern.

    nicht mit dem

    Martin Richter schrieb:

    Im GUI Bereich ist die MFC der ATL überlegen.

    ? GUI zählt bei mir ja zur Grafik. Nachdem ich aber keine GUI hab ist ATL/WTL besser, ist das richtig?



  • Grafik = alles, was mit GDI zu tun hat
    GUI = alles, was mit Fenstern zu tun hat



  • Achja, klar. In Windows sind ja alle GUI-Elemente Fenster, oder wie das nochmal war. Hab jahrelang nur OpenGL- und D3D-basiert programmiert, drum war die GUI für mich immer Teil der Grafik. 😉 Garnet so leicht, umzudenken wenn ma mal so festgefahren ist...

    Dankeschön!


Anmelden zum Antworten