VC++ immernoch so umständlich???



  • Hallo Leute!

    Ich habe vor vielen Jahren angefangen, mit Borland C++ Builder zu arbeiten und habe viele kommerzielle Anwendungen erfolgreich damit entwickelt, eine Menge eigener Komponenten geschrieben usw.. Damals erschienen mir die MS Tools einfach zu umständlich.

    Jetzt muss ich für einen Pocket PC 2003 Anwendungen schreiben und Borland bietet dafür praktisch nichts an, ich muss also MS benutzen.

    Mit Erschrecken habe ich festgestellt, dass sich die Programmierung mit MS VC++ nach wie vor irgendwo auf dem Stand von Windows 3.x befindet. Man muss mit der Messageloop und direkt mit der API arbeiten wie in der Steinzeit.
    Das Minimalbeispiel HelloWorld ist schon unheimlich kompliziert. Für jeden popeligen Text muss man eine Resource anlegen, im case WM_PAINT mit BeginPaint, LoadString usw. arbeiten, grauenhaft!!!

    case WM_PAINT:
    RECT rt;
    hdc = BeginPaint(hWnd, &ps);
    GetClientRect(hWnd, &rt);
    LoadString(g_hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
    DrawText(hdc, szHello, _tcslen(szHello), &rt,
    DT_SINGLELINE | DT_VCENTER | DT_CENTER);
    EndPaint(hWnd, &ps);
    break; usw. usw.

    Es geht mir jetzt ehrlich nicht um einen Religionskrieg. Ich wollte nur mal die VC++ Experten hier fragen ob das wirklich so ist, oder ob ich irgendwas falsch mache. Gibt es bei VC++ sowas wie einen "High Level Modus" in dem ich wie beim C++ Builder einfach nur Objekte auf einer Form plaziere und ihre Properties eingebe usw. oder muss ich wirklich mit der API arbeiten?????

    Was müsste ich im obigen Beispiel machen um einen einfachen Button hinzuzufügen und beim Clicken einen anderen Text anzuzeigen? Muss ich dann mit CreateWindow den Button zu Fuss anlegen??? 😮

    Ich verwende die aktuelle Version "eMbedded Visual C++" Version 4.0, da die Version 5.0 noch nicht fertig ist.

    Viele Grüsse
    Tom



  • Mit Erschrecken habe ich festgestellt, dass sich die Programmierung mit MS VC++ nach wie vor irgendwo auf dem Stand von Windows 3.x befindet. Man muss mit der Messageloop und direkt mit der API arbeiten wie in der Steinzeit.

    Wenn du direkt mit der API arbeitest musst du das unter dem Borland auch. Wenn du mit seiner VCL arbeitest kannst du im Gegensatz dazu MFC des VC benützen.

    Wenn auf Pocket PC bereits .NET läuft hast du noch was besseres in petto.

    MfG SideWinder



  • Naja, kommt ja darauf an, was du benutzt. VC++ ist ja nur ein Werkzeug, und zwar ein sehr gutes. Welche Library und API du benutzt, liegt bei dir. Du mußt kein Win32 oder MFC benutzen. Wobei MFC doch schon recht mächtig ist, wenn man mal ein paar Prinzipien verinnerlicht hat. Ich habe mit der MFC kein Problem.

    Gut, für PocketPC gibts genauso wie für Windows auch andere Libs. Z.B. gibts wxWidgets für PocketPCs, oder Qt gibt es glaub ich auch für PocketPC. Und Qt ist definitiv nicht umständlich.

    Ansonst wie mein Vorredner noch sagte: Compact.NET-Framework benutzen. Ich habe es noch nie benutzt, aber es müsste auch zu gebrauchen sein.

    Das alles kannst du mit VC++ machen, mußt nur die Libs besorgen.



  • Danke für die Info, das beruhigt mich ein bischen. Ich will natürlich NICHT mit der API arbeiten, ich bin nur offenbar zu doof, im VC++ Menü die richtigen Stellen zu finden um eben auf einem höheren Level zu arbeiten. Ich will gerne .NET verwenden, aber ich weiss nicht WIE??? Ich kriege irgendwie den Einstieg nicht hin, bei mir erscheint immer nur der cpp Quelltext (eigentlich ist es nur C Quelltext, kein C++) mit den ganzen API-Calls. Bin schon ganz verzweifelt!

    Kannst Du mir sagen welche Menü-Einträge (habe englische Version) ich clicken muss um eine Form anzuzeigen und einen Button zu plazieren? Oder gibt es irgendwo im Web eine Einführung mit Screenshots? Bei MSDN gibts nur Unmengen von englischem Text. 😕

    Viele Grüsse
    Tom



  • Such mal im Netz nach Tutorials für "MFC mit VisualC++", sollte sich genügend finden lassen.

    MfG SideWinder



  • Ich glaube so allmählich verstehe ich. Während beim Borland die VCL und CLX Libs schon eingebaut sind, muss man sie bei MS extra installieren, ansonsten kann man eben nur mit der API arbeiten. Qt klingt gut, habe ich schon unter LINUX mehrfach verwendet, aber ich denke dass MS in Zukunft immer mehr auf .NET setzen wird und wenn man eh bei Null anfängt kann ich auch gleich die .NET Libs (die beinhalten dann vermutlich diverse Widgets, hoffentlich habe ich das jetzt richtig verstanden) verwenden.

    Jetzt muss ich nur noch bei MS die richtige Downloaddatei für .NET finden, bei dem gigantischen Wust von Zeugs dort wird das nicht so einfach sein, aber gucke mer mal....

    Danke für Eure Hilfe.

    Tom



  • -> MFC wird bereits mitinstalliert, da musst du nichts mehr extra machen.

    -> .NET wird bei neueren MSVC-Versionen ebenfalls mitinstalliert, weiß ja nicht ob die Embedded-Versionen anders sind, aber der MSVC steht inzwischen bei 7.1 (fast 8.0) und nicht bei 4.0 - eventl. deswegen auch kein .NET std-mäßig dabei?

    -> QT und wxWidgets sind Fremd-Libraries und können zum MSVC dazuinstalliert werden. Vor allem das Erstgenannte ist inzwischen sehr verbreitet.

    MfG SideWinder



  • SideWinder schrieb:

    Such mal im Netz nach Tutorials für "MFC mit VisualC++", sollte sich genügend finden lassen.

    Na ja, das wird ihm auch nichts bringen. Mit MFC ist die Programmierung fast genauso kompliziert und primitiv wie mit der WinAPI.



  • .net ist das richtige schrieb:

    SideWinder schrieb:

    Such mal im Netz nach Tutorials für "MFC mit VisualC++", sollte sich genügend finden lassen.

    Na ja, das wird ihm auch nichts bringen. Mit MFC ist die Programmierung fast genauso kompliziert und primitiv wie mit der WinAPI.

    Das sei mal so dahingestellt, aber .NET ist die Zuknuft, ja das sehe ich auch so.

    MfG SideWinder



  • Important: Visual Studio .NET 2003 is required to create .NET Compact Framework-based applications.



  • Eben hatte ich gedacht, jetzt hab ichs, aber Pustekuchen.
    Habe das "Mobile Application Development Toolkit" (60MB) downgeladen und installiert, denn die Beschreibung klingt vielversprechend:

    "The Mobile Application Development Toolkit provides all the resources you need to start building mobile applications for Windows Mobile-based Smartphone and Pocket PC devices. Visual Studio .NET 2003 and the .NET Compact Framework enable you to build Windows Mobile-based applications quickly and efficiently, whether you want to create an entirely new mobile solution or extend a current desktop application to mobile devices."

    Tja, Mist, unter "Programme" wurde jetzt nur eine index.html Datei angelegt mit einer Beschreibung (mit Screenshots, hurra!) von Visual Basic (shit).

    Im VC++ hat sich nichts geändert, gleiches Bild wie vorher.

    Was zur Hölle war denn jetzt in diesen 60MB drin???

    Ich habe inzwischen Kopfschmerzen, das kann doch nicht so schwierig sein. Irgendwo muss doch mal in klaren Worten stehen, was man von dieser Scheiss-Firma braucht, damit man eine ganz normale primitive Anwendung in C++ mit .NET Widgets auf einem Pocket-PC erstellen kann ohne wie in der Steinzeit mit der API zu programmieren!

    Ich habe inzwischen meine Festplatte mit folgendem Kram vollgemüllt:

    Embedded Visual C++ Version 4.0 eVC4.exe 230MB
    Service Pack 4 für VC++ 68MB
    Microsoft .NET Compact Framework Developer.exe 12MB
    MobileAppDevToolkit.exe 62MB
    Microsoft Pocket PC2003 SDK.msi
    Windows Mobile 2003 Second Edition Developer Resources.msi 2MB
    Windows Mobile 2003 Second Edition Emulator Images for Pocket PC - WWE.msi 56MB

    Und alles ohne Fehlermeldungen installiert.

    Ich kann auch diese primitive HelloWorld Applikation compilieren und ausführen. Es erscheint dann der Emulator mit einem PPC Bildchen, wunderbar!
    Aber eben alles nur auf API-Ebene.

    HILFE!!!!



  • Jetzt kommt mir ein neuer Gedanke:

    Sind entgegen den Werbeversprechen von MS die Entwicklungstools für den PocketPC eben doch nicht gratis, sondern benötigt man "Visual Studio .NET 2003"
    (mindestens die Professional Version) wie "important" geschrieben hat????

    Das kostet dann mindestens 799 USD!

    Wenn dem so ist kann ich ja lange nach meinen Widgets suchen, die gibts garnicht umsonst.....

    Nichts gegen bezahlte SW, ich programmier auch nicht umsonst und der Borland Builder kostet auch, aber es ist einfach scheisse dass MS den Eindruck erweckt, es wäre anders und einen ins Leere rennen lässt!! 😡

    Oder liege ich jetzt schon wieder falsch????

    Gruss
    Tom



  • Von Professional hab ich nix geschrieben.

    Wahrscheinlich geht es auch komplett ohne IDE, oder mit der kostenlosen IDE "Sharp Develop".



  • Das ist schon korrekt so, das Visual Studio kostet Geld, ist aber AFAIK relativ egal welche Version (des 2003 .NET) du dann hast.

    Die Bibliotheken sind kostenlos, aber die IDE nicht. Also musst du entweder ne andere IDE nehmen und das zurechtfummeln, gar keine IDE nehmen (was aber vor allem blöde ist um mal schnell Dialoge zu erstellen 🙂 ) oder das Visual Studio besorgen..



  • Was heißt umständlich? Das größte Problem sind die nach wie vor vorhandenen Bugs, die regelmäßig dazu führen, dass sich der Mist aufhängt (und abgeschossen werden muss) oder gleich von selbst abfliegt. Wenn du vernünftige IDEs wie die von Borland gewohnt bist, dann wirst du dir die Haare ausraufen.



  • Ich hab auch schon mit embedded Visual C++ und der MFC gearbeitet, da gabs keine Probleme oder dauernde Bugs oder dergleichen.

    @Tom im Gegensatz zu Delphi und Co sieht man beim VC-Assisenten viel mehr, was er treibt, weils im Code steht und net versteckt wird. Dadurch siehts komplizierter aus, man kann dafür aber auch selber was dran drehen ... .

    Und um deine Buttons und co zu bekommen musst in die Ressourcenansicht gehen, nen neuen Dialog anlegen, mit dem kannst du ähnlich arbeiten wie mit den Formen bei Borland. Sobald du dann den Klassenassistente aufrusft, kannst du mit ihm automatisch ne Klasse für die Ressource anlegen und alles ist paletti.

    Da fällt mir ein: was für ein Projekt hast du beim Anlegen ausgewählt? Weil wenn du vom Assistentem generierten Code habe möchtest, musst du das dem natürlich sagen: Win32-Anwendung mit Unterstützung des Assistenten, und dort dann am einfachsten halt die Dialogfeldunterstützung.



  • @Pellaeon: Hast du den Thread gelesen? Zum einen will er ne Anwendung für Pocket PC schreiben, zum anderen wird das wohl eher Visual Studio 2003 werden - was bedeutet: Kein Klassenassistent.
    Darin einfach rechte Maustaste auf die Ressource und dann hinzufügen Membervariable.

    @Elmi: Ich weiss gar nicht was du hast, ich musste in der Schule damals auch mit dem Borland Builder C++ (mit VCL) programmieren, war mir jedesmal ein graus. Genau wie Delphi, viel zuviel geklicker und wenn mal was nicht geht steht man wie der Ochs vorm Scheunentor.
    edit: ich wüsste nicht wann mein VStudio mal abgestürtzt ist, das 6er glaub ich nie, das 2003er auch noch nie, benutz ich aber auch erst seit ner guten Woche *g*
    Das ist wohl eher gewöhnungsbedürftig und einstellungssache, wir brauchen hier jedenfalls keinen Religionsstreit 😉



  • Ich habe mir gestern das neue Visual Studio 2005 Beta 2 mal heruntergeladen. Sieht hübsch aus und funktioniert sogar (staun). Abgestürzt ist es bislang noch nicht, aber negativ aufgefallen ist mir die unverständlich organisierte Hilfe. Ausserdem ist das Biest unheimlich lahm. Builder 6 ist ja auch nicht gerade der Schnellste aber gegen VS2005 eine Rakete. Naja, vielleicht liegt am Debug-Code im Beta2...

    Momentan schlage ich mich noch mit dem Syntax herum, der sich doch vom Borland erheblich zu unterscheiden scheint. Selbst so eine Trivial-Funktion wie diese ist nicht hinzukriegen, hab schon alle Varianten ausprobiert:

    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
    {
    count1++;
    sprintf(work,"Button clicked %d times",count1);
    label1->Text = String(work);
    return;
    }

    ------ Build started: Project: test5vcc, Configuration: Debug Win32 ------
    Compiling...
    test5vcc.cpp
    c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\test5vcc\test5vcc\Form1.h(156) : warning C4996: 'sprintf' was declared deprecated
    C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(317) : see declaration of 'sprintf'
    c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\test5vcc\test5vcc\Form1.h(157) : error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : cannot convert parameter 1 from 'System::String' to 'System::String ^'
    No user-defined-conversion operator available, or
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

    Wenn MS Ansi-C Funktionen wie sprintf als "deprecated" bezeichnet, na gut, aber wie wär's denn mit einer Empfehlung, was ich denn stattdessen verwenden soll. Auf so eine Idee kommt MS natürlich nicht. 😞

    Warum das mit dem String(work) nicht geht ist mir auch rätselhaft.
    Hab schon so ziemlich alle Kombinationen ausprobiert, ohne Erfolg.

    Vielleicht probier ichs mal mit:

    label1->Text = String(&_System::work_MS_IS_GREAT_[namespace->%private::work->function<void>]* char^ #_vc++[null]);

    Das funktioniert bestimmt, eigentlich ja ganz simple ;-)))

    Gruss
    Tom



  • Note: sprintf is deprecated; consider using sprintf_s instead

    Aber unter C++ benutzt man ja eh stringstreams!



  • @Pellaeon: Hast du den Thread gelesen? Zum einen will er ne Anwendung für Pocket PC schreiben

    Was denkt du wozu embedded Visual C++ gut ist, und da hat man den Assistenten

    zum anderen wird das wohl eher Visual Studio 2003 werden - was bedeutet: Kein Klassenassistent.
    Darin einfach rechte Maustaste auf die Ressource und dann hinzufügen Membervariable.

    Threadtitel "VC++ immernoch so umständlich???" usw., das war ne Antwort auf Fragen die er eingangs gestellt hat


Anmelden zum Antworten