eVC++: Grafische Komponenten (CButton, etc) dynamisch einbinden?



  • hallo zusammen!

    ich befasse mich für meine Studienarbeit gerade das erste mal in meinem Leben
    mit C++, genauer eMbedded visual C++ auf dem Pocket PC 2003.
    Bisher habe ich hauptsächlich immer nur mit Java und C# programmiert. nebenbei noch diversen Scriptsprachen und auch eMbedded Visual Basic. doch eMbedded C++ ist mir ein riesieges rätsel...
    das nur zum hintergrund...

    zu meinem Problem:

    aus .NET mit C# und Java bin ich gewohnt, grafische komponenten mittels
    komponente1.add(komponente2); hinzuzufügen. hierbei könnte komponenten1 ein fenster sein und komponenten2 ein Button. alles sehr einfach...
    doch für eVC++ habe ich nix derartiges gefunden... nach stundenlangen google ist das einzige was ich immer finde beispiele, in denen der Forms/Gui-Builder benutzt wird, doch muss ich die Buttons/Bilder dynamisch erzeugen und einbiden.
    das muss doch möglich sein?!

    würde mich über SCHNELLE hilfe sehr freunen! 🙂

    gruß,

    domlen



  • hmm... eigentlich bin ich ja kein fan vom "thread puschen", aber es eilt ein wenig, denn ich komm kein nstück weiter und die abgabe rückt näher... 😞



  • Hi,

    wie meinst du das mit den dynamisch?

    CButton b;
    b.Create(...)
    CBitmap p;
    p.LoadBitmap(...)
    

    oder wie dan? 😕

    MFG TaccoGo



  • TaccoGo schrieb:

    wie meinst du das mit den dynamisch?

    dynamisch im sinne von: NICHT mit dem gui/form-bulider! also zur laufzeit erstellt...

    TaccoGo schrieb:

    CButton b;
    b.Create(...)
    CBitmap p;
    p.LoadBitmap(...)
    

    ist das bild/der button mit LoadBitmap/Create dann schon in den CDialog zB eingebunden? achso, ich hab verzweifelt eine "add" methode gesucht, blöde vorbelastung! 😉
    und ich muss zugeben in der refferenz das position beim parameter
    rect - Specifies the button control size and position
    übersehen habe...

    also binde ich mit

    CButton testButton;
    testButton.Create(_T("test"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,100,30), this, 1);
    

    einen button in die aktuelle CDialog klasse ein in der ich mich befinde?



  • Hallo,
    eine add-Funktion wie in JAVA gibs hier nicht.
    Du Programmirst mit MFC Dialogfeldbasirt oder?

    was möchtest du mit den Button den machen?

    MFG TaccoGo



  • Hi!

    TaccoGo schrieb:

    Hallo,
    eine add-Funktion wie in JAVA gibs hier nicht.

    das habe ich inzwischen auch gemerkt! 😉

    TaccoGo schrieb:

    Du Programmirst mit MFC Dialogfeldbasirt oder?

    wenn du mit Dialogbasier meinst das ich mit Fenstern arbeite (arbeiten will), ja! und MFC wohl auch. sollte man denn den CDialog nutzen oder lieber das CFrameWnd oder nur CWnd?

    TaccoGo schrieb:

    was möchtest du mit den Button den machen?

    naja, was wohl, drauf klicken! 😉
    button sollte aber nur ein beispiel für allgemeine grafische komponenten sein..



  • mit Dialogbasier mein ich obst du ein MDI, SDI oder Dialogbasier Fenster arbetest.

    Das du auf einen Button klicken möchtest kont ich mir denken.

    Hast du VC++ 6 dan kannst du doch den assistenten benutzen um Dialogfeldern krafische elemente hinzuzufügen.

    MFG TaccoGo



  • Er hat das VS.NET 2003 für embedded Systems, also kann er die MFC benutzen, wenn er möchte,_aber_ er möchte den Inhalt eines Dialoges nicht mit nem GUI Builder erstellen, sondern in seinem Code je nach bedarf die Elemente dem Dialog hinzufügen.

    Und ja einfach beim Create den Zeiger auf den CDialog angeben, innerhalb der Klasse für den Dialog ist das einfach this 🙂

    Du kannst alle 3 benutzen, nur musst du halt wissen was du brauchst, wenn du nen Dialog mit Steuerelementen haben möchtest, dann bringen die dir in nem CFrameWnd "nicht so viel".



  • SirLant schrieb:

    Er hat das VS.NET 2003 für embedded Systems,

    ne, eMbedded Visual C++, aber das is ja egal!

    SirLant schrieb:

    also kann er die MFC benutzen, wenn er möchte,_aber_ er möchte den Inhalt eines Dialoges nicht mit nem GUI Builder erstellen, sondern in seinem Code je nach bedarf die Elemente dem Dialog hinzufügen.

    genau, danke! ich meine ich habs jetzt ja nicht erst einmal erklärt... 😉

    SirLant schrieb:

    Und ja einfach beim Create den Zeiger auf den CDialog angeben, innerhalb der Klasse für den Dialog ist das einfach this 🙂

    danke, this is immerhin mal ein "bekannter string" für mich in diesem kryptischen haufen an übergabeparamter-beschreibungen in c++ 🙂

    SirLant schrieb:

    Du kannst alle 3 benutzen, nur musst du halt wissen was du brauchst, wenn du nen Dialog mit Steuerelementen haben möchtest, dann bringen die dir in nem CFrameWnd "nicht so viel".

    was sind denn die unterschiede? aus der refferenz werden die mir nicht wirklich ersichtlich! mich irritiert das wort "Dialog" auch. bei Dialog denke ich halt immer einen SaveFile-Dialog oder eben eine Error-Warning, aber nicht an die GUI ansich... mucc ich mich einfach von dem denken lösen?

    und VIELEN dank schonmal!



  • Ok ob nun das VS.NET oder nur VC++ ist egal, haben ja die gleiche Funktionen in C++ Richtung.

    this ist einfach ne Adresse auf den Anfang eines Objektes, in diesem Fall zu dem Objekt deiner Dialog-Klasse.

    Öffne einmal Notepade und sag mir/uns ob du die Elemente in das weiße Feld haben möchtest, oder in so einen Kasten wie Suchen&Ersetzen (ja so nen Speichern/Öffnen Kasten ist auch ein Dialog, des gibt es sogar fertig in der MFC)

    Möchtest du in das weiße Feld bei Notepad schreiben, dann musst du die Elemente in der Klasse CMainFrame hinzufügen. CFrameWnd ist die Basisklasse von CMainFrame in deiner Anwendung. CWnd ist wiederum die Basisklasse von CFrameWnd. Ist alles etwas komplex, wenn du dich damit noch nicht so gut auskennst.
    Kurz: willst du das weiße Fenster wie bei Notepad schreiben, dann musst du die Elemente dem CMainFrame hinzufügen und bei nem Dialog deiner Dialog-Klasse (jedes Dialogfenster hat ja eine Klasse welche von CDialog erbt).

    Ich hoffe ich hab dich nicht verwirrt 🤡



  • sag mal, liest hier keiner richtig was die leute schreiben?!?!?!

    SirLant schrieb:

    Ok ob nun das VS.NET oder nur VC++ ist egal, haben ja die gleiche Funktionen in C++ Richtung.

    ääh, habe ich was anderes gesagt?!? 😕 🙄

    SirLant schrieb:

    this ist einfach ne Adresse auf den Anfang eines Objektes, in diesem Fall zu dem Objekt deiner Dialog-Klasse.

    ja, danke, aber habe ich was anderes gesagt? ich habe es oben sogar beschrieben und "verwendet" 😕 🙄

    SirLant schrieb:

    Öffne einmal Notepade und sag mir/uns ob du die Elemente in das weiße Feld haben möchtest, oder in so einen Kasten wie Suchen&Ersetzen (ja so nen Speichern/Öffnen Kasten ist auch ein Dialog, des gibt es sogar fertig in der MFC)

    also lagsam komme ich mir doch ein wenig verarscht vor... ich weiß was ein applikations fenster und was ein Dialog fenster ist! meine frage bezog sich darauf ob das hier evtl anders ist! ... 😕

    SirLant schrieb:

    Möchtest du in das weiße Feld bei Notepad schreiben, dann musst du die Elemente in der Klasse CMainFrame hinzufügen. CFrameWnd ist die Basisklasse von CMainFrame in deiner Anwendung. CWnd ist wiederum die Basisklasse von CFrameWnd. Ist alles etwas komplex, wenn du dich damit noch nicht so gut auskennst.
    Kurz: willst du das weiße Fenster wie bei Notepad schreiben, dann musst du die Elemente dem CMainFrame hinzufügen und bei nem Dialog deiner Dialog-Klasse (jedes Dialogfenster hat ja eine Klasse welche von CDialog erbt).

    In der "Class Library for Windows CE" gibt es kein CMainFrame...

    SirLant schrieb:

    Ich hoffe ich hab dich nicht verwirrt 🤡

    ne, aber ich fühl mich echt verarscht... vorallem wenn ich schon selber sage das es kein unterschied macht und ich meine ansicht von Dialog erkläre, mit beispiel und du mir mit notepad kommst...

    sorry, aber irgendwie ganz schön strange hier...


Anmelden zum Antworten