Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - sendMessage/postMessage geht nicht


joe66 - Do 10.05.12 22:25
Titel: sendMessage/postMessage geht nicht
für einen Test habe ich folgendes zusammen gestellt.
Wenn ich eine Message per Form.handle an die Form schicke wird entspechende Routine aufgerufen; das geht!!!
Wenn ich eine Message per MainMenu.handle an das Menü schicke geht das nicht? Wieso???

anbei das Coding

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
const
  WM_ChangeType  = WM_USER + 10001;

type

TMainMenu2 = class(TMainMenu)
private
protected
      procedure WMChangeType(var Message);    message WM_ChangeType;
public
published
 published
end;

TForm2 = class(TForm)
   MainMenu21: TMainMenu2;
   procedure FormClick(Sender: TObject);
private
   procedure WMChangeType(var Message);    message WM_ChangeType;
public
end;

implementation 

procedure TForm2.FormClick(Sender: TObject);
begin
   sendMessage (MainMenu21.Items.Handle,WM_ChangeType,integer(0),integer(Self)); //macht nichts !!!
   sendMessage (MainMenu21.Handle,WM_ChangeType,integer(0),integer(Self)); //macht nichts !!!
   sendMessage (Self.Handle,WM_ChangeType,integer(0),integer(Self)); //hier geht's!!!
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 10.05.2012 um 22:43


Narses - Do 10.05.12 22:46

Moin und :welcome: im Forum!

user profile iconjoe66 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich eine Message per MainMenu.handle an das Menü schicke geht das nicht? Wieso?
Zum einen kennt die Komponente die Message sowieso nicht, du hast ja explizit eine User-Message erstellt. Zum anderen werden selbstdefinierte Messages AFAIK nur in der MessageLoop der Anwendung dispatched. :nixweiss:

Die Frage ist also: was soll das bringen? :gruebel:

cu
Narses