Dynamisch erzeugte Controls und DDX
-
Hi,
ich habe eine etwas umfangreichere Frage zum Dialogdatenaustausch.
Zunächst eine kurze Beschreibung des "Sachverhalts":
Ich erzeuge mir in einer SDI-Anwendung einen Dialog, der einige Steuerelemente enthält, deren Anzahl erst zur Laufzeit feststeht.Im Konstruktor der Dialogklasse habe ich deshalb die benötigten Steuerelemente dynamisch erzeugt und in einen Container gepackt.
In OnInitDialog habe ich die Create-Methode des jeweiligen Steuerelements aufgerufen (Position des Steuerelements im Dialog festgelegt, entsprechende Stile gewählt) und unter anderem auch die Control ID festgelegt.
(*iter).m_pCombo->Create( CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE, CRect(/*Position*/), this, 4001 + nCounter);Ich iteriere also über den Containerinhalt und zähle dabei die ID des jeweiligen Controls (hier von 4001 beginnend) hoch. Soweit hat das auch alles wunderbar geklappt, der Dialog hat das gewünschte Aussehen.
Jetzt würde ich gerne DDX für den Datenaustausch zwischen Dialogklasse und den Steuerelementen verwenden und habe dabei folgendes Problem:
Da ich die ID des jeweiligen Steuerelements beim Aufruf von dessen Create-Methode in OnInitDialog festlege, steht mir diese ID in DoDataExchange noch nicht zur Verfügung. D.h. innerhalb von DoDatExchange stünde dann innerhalb einer Schleife irgendetwas in dieser Art:DDX_Text(pDX, 4001 + nCounter, m_ComboText);Zu diesem Zeitpunkt wurde die Create-Methode des Controls allerdings noch nicht aufgerufen...
Kann ich den Aufruf von Create irgendwie zeitlich vor dem Aufruf von DoDataExchange platzieren?
Oder sollte ich ganz auf DDX verzichten?Für ein paar Tipps wäre ich dankbar!