Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by sirius,
15. Nov 2007
Benutz dann aber bitte WM_USER plus Irgendwas und mach einen neuen Messagetyp.
Wenn jedes Programm WM_USER benutzen würde, gäbe es ein riesiges Chaos.
const
WM_THREADWINDOW = WM_USER + $1234;
Upps, ja. Das wollte ich auch noch schreiben, das sich eine Konstante da als günstig erweist. Musste dann aber dringend zur Mittagessen :mrgreen:
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by sirius,
15. Nov 2007
Das würde in etwa so aussehen:
//Vorraussetzung ist, dass du das Windowhandle eines Fensters im MainThread hast
procedure Threadexecute;
var myRecord:TmyRecord
antwort:integer;
begin
...
antwort:=sendmessage(windowhandle,WM_User,integer(@myRecord),0);
// anstatt der 0 kann man natürlich noch eine andere Zahl übergeben
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by sirius,
15. Nov 2007
Wieso globale Variablen? Du benutzt doch TThread, oder? Da kannst du doch die Variablen in deiner TThread-Insatnz haben.
Sendmessage wäre da allerdings noch einfacher. Denn da kannst du einen Pointer auf einen Record mit deinen Variablen übergeben. Aber Messages sollte man mit Bedacht einsetzen, da sie den Code schnell unleserlich machen. Aber wenn du sie nur dafür verwendest, geht das.