Hallo,
// EDIT:
Selbst gefunden, siehe unten.
ich habe eine Delphi Prism Assembly, die unmanaged DLL Funktionen exportiert. Diese werden wiederum aus Delphi für Win32 aufgerufen.
Jetzt möchte ich eine Bitmap an die DLL übergeben. Dafür habe ich einen HBitmap Parameter vorgesehen. Leider kommt dabei die Fehlermeldung "Allgemeiner Fehler in GDI+.", wenn ich das Handle in .NET verwenden will.
Ich benutze Image.FromHbitmap um das Handle in ein .NET Objekt zu verwandeln. Muss ich da bei einem unmanaged Handle noch etwas besonderes machen?
Hier der entsprechende Code, etwas gekürzt:
Delphi-Prism-Quelltext
1: 2: 3: 4: 5: 6: 7:
| [UnmanagedExport('xyz', CallingConvention.StdCall)] method xyz(BitmapHandle: IntPtr): Boolean;
method x.x.xyz(BitmapHandle: IntPtr): Boolean; begin var PrintImage: Bitmap := Image.FromHbitmap(BitmapHandle); PrintImage.Save('c:\temp\xyz.bmp'); |
Und der Aufruf:
Delphi-Quelltext
1: 2: 3: 4: 5:
| TPrintBitmapFromHandle = function(PrinterHandle: LongInt; BitmapHandle: HBitmap): Boolean; stdcall;
...
xyz(OutputBitmap.Handle); |
Hat jemand eine Idee?
Vielen Dank,
schönen Gruß,
Sebastian
// EDIT:
Ok, damit ich das Handle nutzen kann, reicht es, wenn ich es mit OutputBitmap.ReleaseHandle freigebe. Damit hat sich das Problem erledigt.