wenn man ein neues
DLL projekt anlegt steht da oben drin ein ganz wichtiger Text den du so wie es aussieht einfach entfernt hast ohne ihn zu lesen/verstehen. Du Darfst nicht einfach Objecte, Strings und andere Dinge die mit dynamischer Speicherverwaltung zu tun haben zwischen
DLL hin und her reischen außer die bindest die ShareMem ein (wie es in dem besagten Text steht). Wenn du anstelle von TCanvas einfach Canvas.Handle an die funktion übergibst (der Typ ist HDC) dann kannst du innerhalb der
DLL einem TCanvasObject dieses
Handle zuweisen und genau so arbeiten wie bisher ohne das ein fehler auftaucht.
Ändere Sie einfach wie folgt ab:
Delphi-Quellcode:
procedure DrawColor(
const CanvasHandle: HDC; Width: integer; Height: integer; ColorR, ColorG, ColorB: Byte);
var LCanvas: TCanvas;
begin
LCanvas := TCanvas.Create;
LCanvas.Handle := CanvasHandle;
LCanvas.Brush.Color:=
RGB(ColorR, ColorG, ColorB);
// 1)
LCanvas.Rectangle(-1, -1, Width + 1, Height + 1);
LCanvas.Handle := 0;
LCanvas.Free;
end;