Jetzt bin ich etwas verwirrt (überfordert...)
Hier mal auszugsweise die CREATE der besagten
Unit:
Delphi-Quellcode:
constructor TDATA2.Create();
begin
inherited Create;
...
FParserThread := TParserThread.Create(Self);
FParserThread.SuspendWork;
FParserThread.Resume;
...
FFont := TFont.Create;
FFont.Name := 'Lucida Console';
FFont.Size := 16;
FFont.Style := [fsBold];
FFont.Color := clWhite;
...
FBMOSD := TBitMap.Create;
FBMOSD.PixelFormat := pf32bit;
FBMOSD.Canvas.Brush.Color := clBlack;
FBMOSD.Canvas.Font.Assign(FFont);
FTextHeight := FBMOSD.Canvas.TextHeight('X');
FTextWidth := FBMOSD.Canvas.TextWidth('X');
FBitmapWidth := FTextWidth * 40;
FBitmapHeight := FTextHeight * 25;
FBMOSD.Width := FBitmapWidth;
FBMOSD.Height := FBitmapHeight;
_FillRect(0, 0, FBitmapWidth, FBitmapHeight, clBlack);
...
end;
Zur Erinnerung:
FBMOSD wird NICHT im HauptThread oder von sonstigen Threads verwurstet, sondern lediglich in einer (zuvor jedoch IM Hauptthread erzeugten) separaten OSD-Form - extra nur (hilsfsweise) für diese
Unit.
Hilft das weiter ?