JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=c1c5f9857a26a35f3c2f0ad8fc1d4c4fMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Borland C++ VLC - Steuerelemente dynamisch erstellen?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 24.01.2005, 22:27    Titel: Borland C++ VLC - Steuerelemente dynamisch erstellen? Antworten mit Zitat

Ich bastel gerade an einem kleinen Programm unter Borland C++
und möchte dort während der Laufzeit je nach Bedarf (einstellbar vom Benutzer) eine bestimmte Anzahl an Textfeldern dynamisch erstellen.

Ich hab schon allerlei rumprobiert, auch mit InsertControl, falls das dazu überhaupt gedacht ist, .... Nur hat's bisher nie gefunzt, dass ich dynamisch etwas auf meine Form zaubere, auch nicht mit Buttons. Confused

Bin leider noch nicht allzu geübt mit dem Windows-Fenster-Programmen @ Borland C++.
Aber vielleicht kann mir der eine oder andere bei diesem Problem behilflich sein. Rolling Eyes

MfG
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 14:35    Titel: Antworten mit Zitat

hm, hat das was mit dem Compilerzu tun? So weit ich weiß (und ich hab den Petzold, allerdings noch nicht alles gelesen) brauchst du für jedes Steuerelement nur ein Handle, und musst dir ne iD merken, das sollte doch nun wircklich nicht schwer sein das dynamisch zu machen.Entweder mit STL oder halt klassisch mit new und delete.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
C++Builder
Senior JLI'ler



Anmeldedatum: 04.10.2003
Beiträge: 235

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 14:39    Titel: Antworten mit Zitat

nein du kannst keine Objekte wie Editfelder oder Buttons mit new und delete anlegen

eine gaaanz schlechte Variante, du packst tonnen weise von deinen Elementen auf das Formular, machst dir ein Array mit Referenzen auf die Teile und kannst so über die Dinger mit nem Array zugreifen, so kannst du die dann kompfortable mit ner Schleife bei allen Visible = false setzen und nur so viele anzeigen wie du brachst aber das das sehr unflexibel und resourcenraubened ist brauch ich dir ja nicht zu sagen Wink ansonsten hätte das Patrick getan Wink


Zuletzt bearbeitet von C++Builder am 25.01.2005, 14:54, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 14:53    Titel: Antworten mit Zitat

warum soll man ds den nicht mit new oder delete machen können?
du brauchst doch nur ein Handle für Createwindow und musst vieleicht noch die ID zwischenspeichern. Wo soll das den bitteschön nicht gehen?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 25.01.2005, 15:21    Titel: Antworten mit Zitat

Ich habs auch mal gesehen das es irgendwie funktioniert, war aber bei ner älteren Version, ich nehme aber nicht an das die das weggelassen haben.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 17:52    Titel: Antworten mit Zitat

Dachte, es gäbe vielleicht irgendwo versteckt eine eigene Funktion von Borland.

Das mit den massig Controls draufsetzen kenn ich bereits aus Erfahrung, aber ich möchte bei diesem Projekt eigentlich ~1000 solcher verwenden, da ist das nicht wirklich eine sinnvolle Lösung.

Also wenn's wie ein Teil hier meint, einfach machbar ist, wäre für ein Beispiel dankbar. Rolling Eyes


Ansonsten kam mir noch die Idee, dass ich die Anzahl an gleichzeitig sichtbaren Feldern einmal draufklatsche und damit mehrere Vortäusche, d.h. Variablen in einem Feld speichere und die Ansicht jeweils anpasse. Confused

MfG
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.01.2005, 15:34    Titel: Antworten mit Zitat

CPP:
#include <windows.h>
#include <stdio.h>

/*
Dieses Programm erzeugt eine variable Zahl an Buttons
*/


const int NumButtons=1;

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
               LPSTR sParamString, int iCmdShow)
{
   HWND hWnd;
   MSG Message;
   WNDCLASS WndClass;
   char cAppName[]=TEXT("Viele Buttons");


   HWND* hButtons=new HWND[NumButtons];

   WndClass.cbClsExtra=0;
   WndClass.cbWndExtra=0;
   WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
   WndClass.hCursor=LoadCursor(NULL, IDC_ARROW);
   WndClass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
   WndClass.hInstance=hInstance;
   WndClass.lpfnWndProc=MainWndProc;
   WndClass.lpszClassName=cAppName;
   WndClass.lpszMenuName=NULL;
   WndClass.style=CS_HREDRAW | CS_VREDRAW;

   RegisterClass(&WndClass);

   hWnd=CreateWindow(cAppName,
                  cAppName,
                  WS_OVERLAPPEDWINDOW,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT,
                  NULL,
                  NULL,            //Menü
                  hInstance,
                  NULL);


   //jetzt alle Knöpfe erstellen:
   for(int i=0; i<NumButtons; i++)
   {
      hButtons[i]=CreateWindow(TEXT("button"), TEXT("Ok"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,
      10, 10+20*i, 200, 20,
      hWnd, (HMENU)i, hInstance, NULL);//i ist die Button ID!
   }


   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

   while(GetMessage(&Message, NULL, 0, 0))
   {
      TranslateMessage(&Message);
      DispatchMessage(&Message);
   }

   delete[] hButtons;

   return Message.wParam;
}


LRESULT CALLBACK MainWndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{

   switch(Message)
   {
   case WM_DESTROY:
      PostQuitMessage(NULL);
      break;
   case WM_COMMAND:
      {
         char Text[32];
         sprintf(Text, "Button %i", LOWORD(wParam));
         MessageBox(hWnd, Text, TEXT("Knopf gedrückt!"), MB_OK);
      }
      break;
   default:
      return DefWindowProc(hWnd, Message, wParam, lParam);
   }

   return 0;
}


Ist das das was du wolltest?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 26.01.2005, 18:58    Titel: Antworten mit Zitat

Er nutzt wahrscheinlich den Borland C++ Builder da wird nen ganz anderes System benutzt.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.01.2005, 19:20    Titel: Antworten mit Zitat

moment, Windows stellt diese funktionen doch so oder so zu Verfügugn, sollte das jetzt etwa Compiler abhängig sein? Das fände ich nun aber sehr seltsam.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum