C++-Anfänger mit MFC



  • Nee den gibts seit dem 2003er Studio (?) nicht mehr.
    Stattdessen gibts einige Assistenten (teilweise ziemlich versteckt), die ClassView usw.



  • Squeller schrieb:

    Hi,

    danke schonmal. Ich hoffe, ich habe mir nicht zuviel vorgenommen...

    Bzgl. http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel1.htm

    Da wird ein Klassenassistent gezeigt. Ist der in VS2008 auch noch so vorhanden (ich kann das jetzt nicht nachsehen)? Habe einen solchen da nie gesehen...

    Deshalb gabs von mir die Bemerkung mit der 6er Version. Du hast aber hoffentlich schon nicht nur die Express-Version vom 2008er...



  • Nein, Visual Studio 2008 Pro.



  • Oha, das kann ja was geben. Die Lernkurve in Delphi war doch anders, hier blicke ich nicht urch. Ich wollte klein anfangen: Ich habe zwei Edit-Controls angelegt. Ich habe es nun jedoch in einer Stunde nicht geschafft, zwei Edit-Controls anzulegen, wobei man in das eine eine Eingabe macht und im anderen Control wird, während man tippt, der eingetippte Text ausgegeben.

    --> void CMyFirstCPPAppDlg::OnEnChangeEdit1()

    EDIT. Irgendwann habe ich SetDlgItemText gefunden.

    SetDlgItemText(IDC_EDIT2, T("testtext"));
    

    So bekomme ich schon mal Text in Edit2. Warum eigentlich _T? Ist unicode Pflicht?

    Nun würde ich gerne statt "testtext" den Inhalt von EDIT1 ausgeben. Wie? Au weia, ich verheddere mich total zwischen diesen vielen Projektdateien, MSDN-Hilfe, Google-Hits usw... Es ist schrecklich.



  • Das Gegenstück zu SetDlgItemText ist GetDlgItemText. Damit kannst du aus dem ersten Control den Text auslesen (du musst ihn zwischenspeichern) und ihn im zweiten Control setzen.

    Unicode ist nicht Pflicht und kann in den Projekteinstellungen abgeschaltet werden (stell dann auf MBCS), dann kannst du auch auf das _T-Makro verzichten. Ob du Unicode verwenden willst, ist dir selbst überlassen.



  • _matze schrieb:

    Das Gegenstück zu SetDlgItemText ist GetDlgItemText. Damit kannst du aus dem ersten Control den Text auslesen (du musst ihn zwischenspeichern) und ihn im zweiten Control setzen.

    Ich muss mich glaube ich erstmal zum intensiveren Studium zurückziehen. Der Umgang bei cpp mit Strings scheint auch für mich ungewohnt gelöst zu sein. Array of chars?

    Was will GetDlgItemText eigentlich als 2. Argument?
    GetDlgItemTextW(IDC_EDIT1, ?);
    Auch IDC_EDIT1? Ich habe hier ein autom. angelegtes Edit-Control. Wie heißt da das handle, wie der Identifyer?



  • Das 2. Argument ist ein Zeiger auf ein char-Array, dass du vorher anlegen musst (und das genügend Speicher bereitstellen muss). Zum Beispiel so:

    wchar_t temp[512];  //besser zuviel als zu wenig Speicher reservieren
    GetDlgItemTextW(IDC_EDIT1,temp,512);
    

    Meine Empfehlung wäre, die Windows-Programmierung erstmal hinten anzustellen und lieber die C++-Basics in Form von Konsolenanwendungen zu lernen. Du wirst hier viel zu sehr mit MFC-Gedöns konfrontiert, das nur von der eigentlichen Basis der Sprache ablenkt. Wenn du in der Konsole halbwegs sicher bist, kannst du immer noch auf WinAPI oder MFC wechseln und kommst dann sicher deutlich besser zurecht. 🙂



  • _matze schrieb:

    Meine Empfehlung wäre, die Windows-Programmierung erstmal hinten anzustellen und lieber die C++-Basics in Form von Konsolenanwendungen zu lernen. Du wirst hier viel zu sehr mit MFC-Gedöns konfrontiert, das nur von der eigentlichen Basis der Sprache ablenkt. Wenn du in der Konsole halbwegs sicher bist, kannst du immer noch auf WinAPI oder MFC wechseln und kommst dann sicher deutlich besser zurecht. 🙂

    Danke, Du hast vermutlich Recht. Ich werde das, was ich vorhabe, mal als Konsolenanwendung schreiben und wenn ich das geschafft habe es zu einer GUI-Anwendung machen.
    Ich komme jetzt vermutlich öfter 😃 Was die Sprache angeht, habe ich auch noch ein Buch "C/C++. Die Referenz von Dirk Louis" - Zwar gibts vieles im WWW, aber da verzettel ich mich immer zu leicht.



  • R3dNeXX schrieb:

    Nee den gibts seit dem 2003er Studio (?) nicht mehr.
    Stattdessen gibts einige Assistenten (teilweise ziemlich versteckt), die ClassView usw.

    mit meinem msvc2005 kann ich immer noch mfc-basierte anwendungsgerüste erstellen, allerdings ist die bedienung ganz anders als beim vc6.
    zum anfangen: ich finde, GUI-programme sind für anfänger viel interessanter als konsolenzeugs. z.b. meine ersten gehversuche unter win waren gleich windows-programme, hat echt spass gemacht. davor konnte ich nur BASIC und assembler. hätte ich auf der konsole angefangen, hätte ich bestimmt schnell die lust verloren bzw. ich fands sehr reizvoll, 'echte' windowsprogramme zu bauen, mit buttons, editfeldern, dialogboxen, bitmaps usw. (aber das ist bei jedem wohl verschieden).
    🙂



  • ;fricky schrieb:

    zum anfangen: ich finde, GUI-programme sind für anfänger viel interessanter als konsolenzeugs.

    Interessanter auf jeden Fall, aber leichter wohl eher nicht. Ich habe auch direkt mit Windows-Programmen anfangen müssen (hatte ne neue Arbeitsstelle, konnte aber noch kein C, musste aber produktiv sein 😉 ). Trotzdem bin ich der Meinung, dass man die Basics auf der Konsole besser lernen kann, weil man da nunmal diesen riesigen 'WinAPI-Overhead' nicht noch mit lernen muss. Man kann ruhig mal ein paar Wochen in Konsolenanwendungen investieren, bevor man sich vom PSDK erschlagen lässt. 😉 Dann fällt der Einstieg dort auch sicher leichter und man hat von vorneherein mehr Ahnung von dem, was man da macht.


Anmelden zum Antworten