Picturebox dymansich erstellen



  • Hallöchen zusammen,

    ich arbeit gerade für ein Schulprojekt an einem Spiel.
    Es geht dabei um das alt bekannte Schiffe versenken, programmiert in VC++.

    Bei einem Angriff auf den Gegner soll dem Spieler angezeigt werden ob er getroffen hat oder nicht, indem auf dem Spielfeld ein weißer oder roter Punkt erscheint.

    Geplant habe ich dies so, dass an der entsprechenden Koordinate auf dem Spielfeld eine Picturebox erzeugt wird, die entweder einen weissen oder roten punkt zeigt.

    In der Schule hatten wir mit dem Borland Build gerabeitet, und selbst dort haben wir nur Objekte von einfachen Klasse dynamisch erzeugt aber keine Steuerelemente:

    Klasse *Objekt;
    Objekt = new Klasse;
    

    Dies habe ich heute in der Schule einmal mit einem Stuerelement nur unter Borland versucht, wurde zwar erstellt, also man konnte damit arbeiten, aber nicht auf der Form angezeigt. Und meine Erfahrungen sagen mir, dass es unter VC++ meist etwas komplizierter ist.

    Deshalb meine Frage:

    Wie kann ich Pictureboxen unter Microsoft Visual C++ 2008 dynamisch erstellen, dass diese dann auf der Form angezeigt werden.

    Danke schonmal im Voraus,
    Gruß Hirsch



  • Bei Steuerelementen ist es eigentlich mehr oder weniger das Gleiche. Du musst nur daran denken, das Steuerelement zu erzeugen und anzuzeigen.

    Mini-Beispiel:

    CComboBox *combo=new CComboBox;
      RECT rc;
      rc.left=rc.top=0;
      rc.right=200;
      rc.bottom=100;
      combo->Create(CBS_DROPDOWN,rc,this,NULL);
      combo->ShowWindow(SW_SHOW);
    

    EDIT: Falls du es nicht weißt, eine PictureBox ist eine Instanz der Klasse CStatic mit Style SS_PICTURE oder SS_BITMAP (weiß nicht mehr genau, siehe MSDN).



  • Hi!

    Vielen Dank für die schnelle Antowort!

    Zwei Fragen noch:

    1. Was bedeuten CBS_DROPDOWN und SW_SHOW`

    2. Ist es möglich diese Pictureboxen als Arrays zu erzeugen? Denn es sollen ja mit jedem Treffer/nicht Treffer solche boxen erzeugt werden... Das können also zwischen Null und hundert werden und dann müsst ich ja zu Beginn mit diesem Pointer jede einzlene mit Namen deklarieren. Geht es, dass das Programm jeder neuen Picturebox eine Fortlaufende nummer gibt, wie bei einem Array?

    Danke nochmal...





  • HirschMan schrieb:

    Hi!

    Vielen Dank für die schnelle Antowort!

    Zwei Fragen noch:

    1. Was bedeuten CBS_DROPDOWN und SW_SHOW`

    2. Ist es möglich diese Pictureboxen als Arrays zu erzeugen? Denn es sollen ja mit jedem Treffer/nicht Treffer solche boxen erzeugt werden... Das können also zwischen Null und hundert werden und dann müsst ich ja zu Beginn mit diesem Pointer jede einzlene mit Namen deklarieren. Geht es, dass das Programm jeder neuen Picturebox eine Fortlaufende nummer gibt, wie bei einem Array?

    Danke nochmal...

    1. Das sind Präprozessorkonstanten (defines). Du kannst dir ansehen, wie sie definiert sind, indem du Rechtsklick=>Gehe zu Definition ausführst. CBS_DROPDOWN ist ein ComboBoxStyle, SW_SHOW das Argument für ShowWindow, um ein Fenster anzuzeigen (SW_HIDE ist das Gegenstück). Siehe MSDN.

    2. Ja, du kannst selbstverständlich ein Array von PictureBoxen erzeugen (oder einen Vector o.ä.).



  • Ok, vielen Dank für eure schnellen Antwroten. 🙂

    Geht es als Array dann so?

    Klasse *Objekt[00];
    


  • Sorry, ich meinte natürlich

    Klasse *Objekt[100];
    

    Kann als unregistrierten ja meinen Beitrag nicht mehr editieren, deshalb der Doppelpost.



  • HirschMan schrieb:

    Sorry, ich meinte natürlich

    Klasse *Objekt[100];
    

    So würdest du ein Array von Zeigern erstellen. Du müsstest noch Speicher allozieren (new/malloc), da du erstmal nur Zeiger erzeugen würdest, aber keine Objekte. Du kannst auch direkt ein Array aus Objekten erstellen, indem du

    Klasse Objekt[100];
    

    schreibst.

    HirschMan schrieb:

    Kann als unregistrierten ja meinen Beitrag nicht mehr editieren, deshalb der Doppelpost.

    Dann registriere dich doch!



  • Ok,

    vielen Dank für deine Hilfe. 🙂

    Dann werde ich heute gleich mal an die Trefferanzeige dranmachen.

    Gruß
    HirschMan

    P.S. Und mich hier registrieren auch 😉


Anmelden zum Antworten