Mach du mal so:
Delphi-Quellcode:
function WindowProc(Window : HWnd; Msg : LongWord; Param1, Param2 : LongInt) : LongInt; stdcall;
var
PaintInfo : TPaintStruct;
begin
Result := 0;
case Msg of
WM_DESTROY : PostQuitMessage(0);
WM_PAINT : begin
//WriteLn('Zeichne!');
BeginPaint(Window, PaintInfo);
SetTextColor(PaintInfo.hdc, $00000000);
TimeString := 'Hallo Welt!'; // <--<<
DrawText(PaintInfo.hdc, PCHAR(TimeString), Length(TimeString), WindowRect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPaint(Window, PaintInfo);
end;
else Result := DefWindowProc(Window, Msg, Param1, Param2);
end;
end;
und schon (sollte) funktioniert es.
Warum ? Wei irgend etwas mit dem String schief läuft wenn er im Thread geändert wird.
Der Thread müsste ggf. noch Syncronisiert werden und die Variable
TimeString als Parameter übergeben werden.
Das ist jetzt eine Vermutung, habe es noch nicht ausprobiert. Das wirst ja du machen.
Achso, diese Schreibweise:[i]@TimeString[1][i] sollte man vermeiden. Es kann bei manchen Compei. zu Fehlern bei der
Bereichsüberprüfung führen zB. wenn der String leer ist.