Buttons, ID-Vergabe und Eventhandler

chriss_2oo4

Erfahrenes Mitglied
Hi,

meine Anwendung liest Daten aus und erstellt während der Laufzeit die benötigten Komponenten.
Für jeden erfassten Datensatz werden eine bestimmte Kombination von Elementen erstellt (Button, ComboBox, Label)
Diese Komponenten habe ich in einer Klasse, die von CWnd abgeleitet ist, zusammengefasst.

Den Komponenten muss eine ID zugewiesen werden, was ja dynamisch geschehen muss. Des Weiteren muss jerder erstellte
Button beim Eventhandler registiert werden, aber wie mache ich das?

Sollte für jede Art von Komponente eine eigene fortlaufende Nummer erstellt werden oder lieber für alle Komponenten
eine einzige fortlaufende ID

Also Fall 1:
===================
Button 1: ID 1100
ComboBox 1: ID 1200
Label1: ID 1300

Button 2: ID 1101
ComboBox 2: ID 1201
Label2: ID 1301


oder Fall 2:
===================
Button 1: ID 1100
ComboBox 1: ID 1102
Label1: ID 1103

Button 2: ID 1104
ComboBox 2: ID 1105
Label2: ID 1106



Danke und LG

Chriss
 
Hi Chriss,

ich habe deine Aufgabenstellung damals so umgesetzt:

1. Ich habe ID-Bereiche für die verschiedenen dynamisch generierten Controls definiert.

also für Buttons z.B. 5000-5999
und für Comboboxen 6000-6999
u.s.w.

Deine Applikation generiert nun dynamisch beliebig viele Buttons oder sonstige Controls.

Für das Event-Handling dieser dynamisch generierten Controls habe ich folgendes gemacht:

In der Überschreibung der virtuellen Methode PreTranslateMessage:

Code:
    if( pMsg->message == WM_COMMAND ) {
        int ctrlID = LOWORD(pMsg->wParam) ;
            // In ctrlId steht der ID-Code des Controls, welches das Event ausgelöst hat!
        if( ctrlId >= 5000 && ctrlId y= 5999 ) {
                 doButtonEvent(ctrlId, HIWORD(wParam));
        }
        else if(ctrlId >= 5000 && ctrlId y= 5999 ) {
                 doComboboxEvent(ctrlId, HIWORD(wParam));
        }
    }

Auf die Art und Weise habe ich eine beliebige Anzahl von Controls unter meiner Kontrolle.

Noch Fragen Immer her damit ;-)

Grüße,

Pit
 
Zuletzt bearbeitet:
Zurück