![]() |
Bitmap von DLL nach App schicken will nicht so recht...
Hi,
ich werde noch Verrückt, in meiner Test-Application funktioniert es und in der richtigen Anwendung nicht. Ich möchte / soll, so ist die Vorderung, ein Bitmap aus meiner DLL an die Anwendung schicken. Das soll über eine DIB-Section funktionieren. In der Test-Anwendung sieht das folgendermasen aus:
Delphi-Quellcode:
Wenn ich das so in die DLL und die App übernehme funktioniert es nicht.
// --- Set Bitmap to Memmory -------------------------------------------------
procedure SetBitmap; var bmi: BITMAPINFO; _bmp: tagBITMAP; pDIB: PDIBSECTION; dwLen : Cardinal; p : Pointer; i: integer; begin ZeroMemory(@bmi, sizeof(BITMAPINFO)); with bmi.bmiHeader do begin biSize := SizeOF(BITMAPINFOHEADER); biWidth := 320; biHeight := 240; biPlanes := 1; biBitCount := 24; biCompression := BI_RGB; biSizeImage := biWidth * biHeight * (biBitCount div 8); biXPelsPerMeter := 0; biYPelsPerMeter := 0; biClrUsed := 0; biClrImportant := 0; end; with bmi.bmiHeader do hBMP := CreateDIBSection(hBmpDC, bmi, DIB_RGB_COLORS, p, 0, 0); // Fill Bitmap SelectObject(hBmpDC, hBMP); FillRect(hBmpDC, RECT(0,0,320,240), CreateSolidBrush(RGB(255,0,0))); SetBKMode(hBmpDC, TRANSPARENT); for i := 0 to 100 do begin SetTextColor(hBmpDC, RGB(0, random(256), random(256)) ); TextOut(hBmpDC, random(320-16), random(240-16), 'X', 1); end; // Mem action dwLen := (bmi.bmiHeader.biWidth * bmi.bmiHeader.biHeight); gMem := GlobalAlloc(GPTR, Sizeof(DIBSECTION) + (dwLen * sizeof(RGBQUAD))); pDIB := PDIBSECTION(GlobalLock(gMem)); GetObject(hBMP, sizeof(_bmp), @_bmp); pDIB^.dsBmih := bmi.bmiHeader; pDIB^.dsBm := _bmp; pDIB^.dsBm.bmBits := p; GlobalUnlock(gMem); p := nil; end; // --- Get Bitmap from Mem --------------------------------------------------- procedure GetBitmap; var bmi: BITMAPINFO; pDIB: PDIBSECTION; bp, p: pointer; begin pDIB := PDIBSECTION(GlobalLock(gMem)); bmi.bmiHeader := pDIB^.dsBmih; bp := pDIB^.dsBm.bmBits; with bmi.bmiHeader do hBMP2 := CreateDIBSection(hBmpDC, bmi, DIB_RGB_COLORS, p, 0, 0); SetDIBits(hBmpDC, hBMP2, 0, bmi.bmiHeader.biHeight, bp, bmi, DIB_RGB_COLORS); globalunlock(gMem); end; Habe ich irgend wo 'n Fehler ? |
Re: Bitmap von DLL nach App schicken will nicht so recht...
// Korrektur:
Also die DIB-Daten sowie der Pointer der Bitmap-Bits kommen richtig an. Aber das Bitmap bleibt dunkel. So ein Sch... scheint so das heute nicht mein Tag ist. |
Re: Bitmap von DLL nach App schicken will nicht so recht...
Ich schiebe hier einfach mal, weil ich echt nicht weiter komme. :gruebel:
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
Muss es unbedingt auf diese Art und Weise geschehen? Ich hab es mir in so einem Fall recht einfach gemacht und hab nur das Bitmap-Handle übergeben und über dieses dann die Daten bezogen. (allerdings mit Hilfe der VCL (TBitmap.Handle = handle...)
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
JA, muss so.
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
Darf ich noch einmal, wenn auch zu einer ungünstigen Zeit, einen "Push-Versuch" wagen ?
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
Kannst du mal eine Testapplication hochladen?
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
Liste der Anhänge anzeigen (Anzahl: 1)
Jupp.
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
hm, hast du auch noch ne DLL incl. source?
|
Re: Bitmap von DLL nach App schicken will nicht so recht...
Würde nicht ein Pointer auf die Bitmap Daten reichen?
Andere Frage: Benutzt du irgendwo gemeinsamen Speicher und hast in der Hauptanwendung "ShareMem" vergessen? ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz