VCL TMessages als Broadcast versenden
-
Hallo,
folgender Code sollte nach dem Entwicklerhandbuch an alle Controls der Anwendung eine Message versenden:
#define MEINE_BOTSCHAFT (WM_APP + 400) TMessage msg; msg.Msg= MEINE_BOTSCHAFT; msg.WParam= 0; msg.LParam= (int) (this); msg.Result= 0; //Abfeuern this->Broadcast((void*) (&msg) );Dieses funktioniert nur bedingt, da die Anwendung aus verschachtelten TFrames besteht.
Die Nachricht kommt nur an der obersten Verschachtelungsebene der Frames an.Was mache ich falsch?
-
wie ich diese sch**** ver****te suchfunktion hasse!
wann wird hier endlich mal was neues installiert oder der alte kram repariert?! nicht mal mit google findet man was! 
schau mal hier, vlei hilft dir das weiter:

-
Vielen Dank für die Antwort.
Das gleiche Problem hatte ich damals unter CLX auch.
Beim Suchen bin ich nicht mal auf meine eigene Loesung gestossen.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-138213-and-highlight-is-.htmlDie Implementierung fuer CLX sieht in etwa so aus:
void ControllerViMo::broadcast(TWinControl* p_twinc) { //Dieses Fenster beschiessen //(synchroner Windows-API-Aufruf) SendMessage(p_twinc->Handle, Event_aenderung_ID, 0, 0); //seine Kinder beschiessen for(int i= 0; i < p_twinc->ComponentCount; ++i) { //absteigen if (TWinControl* twc= dynamic_cast<TWinControl*>(p_twinc->Components[i])) { //Absteigen broadcast(twc); }//war es ein TWinControl? }//ueber alle Kinder }//broadcastDas System hat jedoch noch zwei Probleme:
1. Evtl. werden nur die Sub-Controls des Hauptframes beschossen. Andere Forms bleiben unberuecksichtigt.
2. Waehrend des Nachrichtenversendes aendert sich die Anzahl der Fensterelemente, d.h. die Schleife koennte ins Leere greifen.