Laufzeitbuttons behandeln
-
Hallo! Ich habe folgendes Problem:
Meine Anwendung erstellt je nach belieben des Benutzers zur Laufzeit Buttons.
Schon in der .Create Funktion und nachher sowieso im ON_BN_CLICKED Makro benötige ich eine unterschiedliche fixe Konstante - z.b. irgend ein IDC_BUTTON_1 2, 3, 4 ... für jeden einzelnen Pushbutton! Und da ist das Problem!
Wie kann ich beliebig viele Erstellen und trotzdem eine Behandlungsroutine für jeden schreiben?
In Visual Basic geht das relativ einfach mit Indiezes, also wird das in VC++ ja sicher auch nicht unmöglich sein, oder?Danke euch
euer Eiter
-
ich weiß jetzt nicht ob ich das richtige meine, aber mach eine Array da raus
int maxButtons = 2;
also: CButton button[maxButtons];usw.
-
Jaja, das ist natürlich klar. Aber wie füge ich diesen einzelnen Buttons Behandlungsroutinen hinzu? Wiederhole: Die Anzahl der Buttons (und damit natürlich auch die Größe des Arrays) stehen nicht von vornherein fest!
Vielleicht wäre es am geschicktesten den betreffenden Quellcode zu posten:
BEGIN_MESSAGE_MAP(CChannelsDlg, CDialog)
//{{AFX_MSG_MAP(CChannelsDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
....
usw.Und genau das ist das Problem!
-
Juhuuuu! Ich habe das Problem inzwischen in den Griff bekommen, und zwar so:
1. Ich habe die CButton in einer eigenen Klasse gekapselt
2. Ich mache das Command Handling über OnCmdMsg -> Ich pfeife auf die AFX Maps sondern mache es nun manuell - auch egal!