AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Bitmap von DLL nach App schicken will nicht so recht...
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap von DLL nach App schicken will nicht so recht...

Ein Thema von turboPASCAL · begonnen am 3. Sep 2008 · letzter Beitrag vom 6. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Bitmap von DLL nach App schicken will nicht so recht...

  Alt 3. Sep 2008, 14:56
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:
// --- 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;
Wenn ich das so in die DLL und die App übernehme funktioniert es nicht.
Habe ich irgend wo 'n Fehler ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 3. Sep 2008, 17:57
// 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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 4. Sep 2008, 20:59
Ich schiebe hier einfach mal, weil ich echt nicht weiter komme.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 4. Sep 2008, 21:03
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...)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 4. Sep 2008, 21:16
JA, muss so.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 5. Sep 2008, 19:21
Darf ich noch einmal, wenn auch zu einer ungünstigen Zeit, einen "Push-Versuch" wagen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 5. Sep 2008, 19:26
Kannst du mal eine Testapplication hochladen?
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 5. Sep 2008, 19:36
Jupp.
Angehängte Dateien
Dateityp: zip _test_application_128.zip (31,7 KB, 11x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 5. Sep 2008, 20:03
hm, hast du auch noch ne DLL incl. source?
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Bitmap von DLL nach App schicken will nicht so recht...

  Alt 5. Sep 2008, 20:25
Würde nicht ein Pointer auf die Bitmap Daten reichen?
Andere Frage: Benutzt du irgendwo gemeinsamen Speicher und hast in der Hauptanwendung "ShareMem" vergessen?
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz