gleich mit MFC anfangen oder besser mit der WINAPI32



  • Hallo,

    ich bin Newbe in der Windowsprogrammierung und würde gerne wissen ob es Sinn macht gleich mit der MFC-Programmierung anzufangen,oder sich vorher ausgiebig mit der WINAPI32-Programmierung zu beschäftigen (die ist doch veraltet oder ?).
    Als Grundlage bringe ich gute C/C++ Kenntnisse und OOP mit.
    Gibts denn auch noch andere Alternativen ?

    Auf eine Antwort von Euch bin ich sehr dankbar

    MfG



  • DerAdminStinkt: WinAPI != OOP
    DerAdminStinkt: WinAPI == C
    DerAdminStinkt: MFC == C/C++ Mix
    Gast8262: aber die basis ist doch winapi32 oder irre ich mich ? sorry bin newbe in sachen win-prog
    DerAdminStinkt: ja
    DerAdminStinkt: das stimmt
    DerAdminStinkt: MFC ist nur ein Wrapper
    Gast8262: das heisst
    Gast8588: er kapselt die MFC
    DerAdminStinkt: genau
    NichtDumm: in hässliches c++
    Gast8588: oder anders herum
    NichtDumm: 🙂
    Gast8588: 😉
    Gast8262: welches von beiden hat ne bessere laufzeit ?
    NichtDumm: hä?
    Gast8588: MFC baut auf WinAPI auf und kapselt die C-Funktionen in Klassen
    DerAdminStinkt: WinAPI ist natürlich schneller
    DerAdminStinkt: aber ist ja nur für GUI
    NichtDumm: Aber merkt man kaum
    Gast8588: ...weil reines C
    DerAdminStinkt: -> kein merkbarer Unterschied
    DerAdminStinkt: nein
    Gast8262: danke
    NichtDumm: www.wxwindows.org
    DerAdminStinkt: weil du bei WinAPI nur das schreibst, was du auch brauchst
    NichtDumm: ist besser als mfc
    Gast8588: Aber wenn du die Windowsprogrammierung verstehen willst fang mit WinApi an
    Gast8262: wie siehts eigentlich mit qt aus ist doch besser plattformunabhängig zui programmieren oder
    DerAdminStinkt: genau
    NichtDumm: Super+
    Gast8588: Super G?



  • DerAdminStinkt: GerGGG ist ein c00ler Gast
    NichtDumm: Ist was zum futtern
    Gast8262: gibts eigentlich ne alternative zur mfc
    DerAdminStinkt: mit nem noch cooleren Prog
    DerAdminStinkt: VCL
    Gast8588: VCL
    NichtDumm: VCL
    DerAdminStinkt: ist leichter als MFC
    DerAdminStinkt: aber langsamer
    DerAdminStinkt: (dickerer Wrapper)
    Gast8588: neee
    NichtDumm: ?
    Gast8262: und wie siehts mit der ATL aus
    Gast8588: ist nicht langsamer
    NichtDumm: ATL ist schlank
    Gast8262: nicht gut ?
    NichtDumm: zusammen mit WTL schon
    Gast8588: VCL ist von Bo(h)rland und MFC ist von Mikrodoft
    NichtDumm: gut
    Gast8262: oh gott was ist das denn schon wieder 🙂
    NichtDumm: n zusatz für atl
    NichtDumm: mit mehr gui elementen
    Gast8262: ihr scheint richtig fit zu sein in sachen programmierung
    DerAdminStinkt: kommt schon bald
    Gast8262: wenn ihr ich wärt womit würdet ihr anfangen
    NichtDumm: wer?
    DerAdminStinkt: in 1 Jahr hast dus auch drauf
    DerAdminStinkt: WinAPI
    Gast8588: ich hab mit WinApi angefangen
    DerAdminStinkt: (kurz)
    DerAdminStinkt: dann MFC
    Gast8262: aber ist winapi denn nicht veraltet



  • NichtDumm: und dann C#
    DerAdminStinkt: C# suxx
    Gast8588: VCL ist kinderleicht.... drag und drop wie VisualBasic
    NichtDumm: bald gibts winapi nicht mehr
    NichtDumm: oder?
    Gast8262: welcher gravierende unterschied ist eigentlich zwischen C++ und c#
    NichtDumm: c# suxx, c++ rulez
    Gast8588: c# ist ne Krankheit
    NichtDumm: so einfach ist das zu erklären
    DerAdminStinkt: genau
    DerAdminStinkt: c# == langsam
    Gast8262: visual basic hab ich mal angefangen ne schlechte sprache finde ich kann c nicht das wasser reichen
    NichtDumm: c# == schnell
    NichtDumm: im gegensatz zu java
    DerAdminStinkt: c# == interpretiert
    DerAdminStinkt: c++ == kompiliert
    Gast8262: also von c# besser die foten weg lassen ?
    Gast8588: c# ist eine mischung aus VB und C++ und häßlich
    DerAdminStinkt: -> c++ == schneller
    DerAdminStinkt: "also von c# besser die foten weg lassen ?" ja!
    NichtDumm: JA
    DerAdminStinkt: ist auch MS-proprietär
    Gast8262: ok danke
    Gast8588: wenn's dich interessiert, schau
    Gast8588: 's Dir an
    Gast8262: wie hat sich eigentlich qt durchgesetzt



  • Wenn du dich gut in C++ auskennst, solltest du lieber ne andere GUI-LIB nehmen als die MFC. Die ist scheußlich! Jedenfalls aus OOP-Sicht.



  • wleche denn z.B. ?



  • VCL



  • VCL



  • erster 😃



  • meine meinung dazu: wenn du nur mal schnell eine simple gui brauchst, klick dir das ding mit der VCL oder im resourcen-editor von Visual Studio zusammen - fertig.

    wenn du ernsthaft windows-programmierung betreiben willst, vergiss diesen ganzen lib-krams und lerne von der pike auf - sprich WinAPI in reinem C. wenn du das alles begriffen hast, fängst du einfach an, deine dinge selber in klassen zu kapseln. dann hast du schlanke schnittstellen und den ganzen overhead der VCL/MFC aussen vorgelassen. wenn du damit durch bist, wirst du merken, wie schlecht diese libs das WinAPI kapseln und deine frage hat sich erledigt, da du sie vermutlich gar nicht mehr benutzen willst ;).

    wirf mal einen blick in das MFC/VCL forum ... 90% der fragen die dort gestellt werden, wären überflüssig, wenn die leute das WinAPI drauf hätten. sorry, aber so ist es einfach ... weiss es aus eigener erfahrung, habe auch mit einer lib angefangen, aber schnell gemerkt, das man damit nicht weiterkommt, wenn man in die tiefen des systems will.

    so far ... rocknix ///



  • wirf mal einen blick in das MFC/VCL forum ... 90% der fragen die dort gestellt werden, wären überflüssig, wenn die leute das WinAPI drauf hätten. sorry, aber so ist es einfach..

    so ein Bldsinn..die meisten Fragen im BCB-Forum gehen um VCL-Klassen und wie man mit ihnen umgehen muß...was nützt einem da das Wissen in WinApi?! Natürlich könnte man auch statt der Klassen zu verwenden WinApi verwenden, aber des wär wohl net ganz der Sinn der Sache



  • ok, im vcl forum ist es nicht so extrem, aber bei mfc... 🙄



  • wie es im mfc-Forum is weiß ich nich (mag mfc nich) 🙂

    ne eigene Lib zu schreiben is zwar ne nette Programmier-Übung, aber ist es wirklich nötig? Muß man eigentlich immer und jeder das Rad neu erfinden? "VCL und MFC sind nix für ernsthafte Programmierung"..naja immerhin haben -vermute ich- erfahrene Programmierer bei Micro$oft und Borland die Dinger geschrieben...ob die das wirklich schlechter können als ein einziger Hobby-Programmierer (falls man Hobby-Programmeir is 😉 )? und selbst wenn man es schafft einige Details die an VCL/MFC schlecht gelöst sind bessser hinzukriegen, kriegt man dann die vielen Dinge die sehr gut gelöst sind auch so gut hin? Hat man vielleicht sehr viele Dinge die dort sehr geschkickt gemacht wurden nicht einfach übersehen und steht wenn man sie selber coden will plötzlich dumm da? Ich persönlich hab dadrauf jedenfalls keine Lust und benutz lieber die VCl, selbst wenn sie nicht so schnell is wie reine WinApi . (Ich code ja auch C++ und nicht Assembler obwohl Assembler-Code schneller is)



  • Natürlich könnte man auch statt der Klassen zu verwenden WinApi verwenden, aber des wär wohl net ganz der Sinn der Sache

    genau das ist der punkt - meine erfahrung hat mir gezeigt, dass es mitunter viel viel mehr zeit kostet, die klassen zu verstehen als das WinAPI zu durchschauen. und die klassen zu durchschauen heisst auch noch lange nicht, das man die implementierung und somit den systemkrams begriffen hat. und wehe es tauchen mal fehler auf, dann ist das gejammer gross 😉 ...

    ist das sinn der sache 😉

    rocknix ///



  • Ein Gundverständins der WinApi is aufjdenfall gut. Wenn man zB auf eine Form der VCL zeichnet wird man sich wahrscheinlich wundern daß das was man gemalt hat weg ist sobald man die Form minimiert und wieder hochholt. Da nützt einem das Api-Wissen daß das halt beim Ereignis WM_Paint gemacht werden muß und nicht sonstwo wenns dauerhaft sein soll... trotzdem kriegt man graphische Oberflächen einfach mit KlassenLibs viel schneller hin und sie sehen meistens besser aus, weil man einfach mehr Aufwand ins Design als in die Programmierung selber stecken kann



  • crass hat recht. Ich kenne nun keine anderen GUI-LIBs als die VCL, aber die ist so der Hammer. Wenn man sich den Quellcode durchschaut, dann merkt man, dass dieser von Menschen geschrieben wurde, die Ahnung haben. Richtig geil! Natürlich ist es mit ner LIB einfacher und schneller zu programmieren als mit WinAPI selber. Man denke da nur an das Arbeiten mit Bitmaps. Ist in VCL super-einfach. Ein paar Zeilen ... fertig.



  • Die VCL ist auch ganz gut. Aber MFC stinkt. Mußte den Mist mal Kurzzeitig beruflich machen, nach 2 Wochen hab ich den Mist weggeschmissen, und das Projekt rein WinAPI gecodet. Is echt scheußlich, so ein durcheinander an Klassen. Ok - der MFC Inet kram ist noch logisch, aber ne ganze Anwendung in MFC? Nein Danke *g



  • Man denke da nur an das Arbeiten mit Bitmaps. Ist in VCL super-einfach. Ein paar Zeilen ... fertig

    <ironie>
    ja, stimmt - es ist wirklich supereinfach mit der VCL/MFC bitmaps auf den schirm zu bringen, vor allem wenn man diese noch dazu verwenden möchte eigene controls ( scroller/thumbs sind übrigens besonders einfach, da das subclassen/hooken in VCL so prima funktioniert ) zu zeichnen, wo doch das skinning sooo gefragt ist ... 🙄
    </ironie>

    ach, übrigens ? wieviele zeilen brauchst du für eine bitmap mit dem WinAPI ? 100 ? wohl eher nicht, hmm ?

    so, schluss mit dem flame ... rocknix 🙂

    [ Dieser Beitrag wurde am 01.04.2003 um 11:11 Uhr von RockNix editiert. ]



  • Für den Anfang reicht MFC. Später wenn man relativ sicher im Umgang mit dem CWnd- Zeuch ist schadet es auf keinen Fall einen Blick in die WinAPI zu werfen. Gerade wenn es um IPC etc. geht.



  • @RockNix: Anzeigen der Bitmap-Datei "Bitmap.bmp" an Position (0,0) im Fenster:

    Graphics::TBitmap* bmp = new Graphics::TBitmap;
    bmp->LoadFromFile("Bitmap.bmp");
    Canvas->Draw(0, 0, bmp);
    delete bmp;
    

    Mach das mal in WinAPI so fix. Nene, das Arbeiten mit Klassen für die WinAPI ist durchaus sinnvoll. :p


Anmelden zum Antworten