Thema: Delphi BitBlt()

Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 12. Aug 2002, 19:01
Du treibst mit dem GetDC() dein Windows ganschön in den Speichermangel. Zu jedem GetDC muss auch ein ReleaseDC vorhanden sein!

BitBlt() arbeitet nicht mit Bitmap-Handles, sondern nur mit Geräte Kontexten (DC). Du musst einen Compatiblen DC erzeugen:
Code:
[b]var[/b]
  dc: HDC;
  memDC: HDC;
  oldBmp: HBITMAP;
[b]begin[/b]
  dc := GetDC(hWnd);
  [b]try[/b]
    memDC := CreateCompatibleDC(dc);
    [b]try[/b]
      oldBmp := SelectObject(memDC, hBmp); // Bitmap dem DC zuweisen

      BitBlt(dc, 222 + i * 25, 0, 17, 23, memDC, 0, 0, SRCCOPY);

      SelectObject(memDC, oldBmp);
    [b]finally[/b]
      DeleteDC(memDC);
    [b]end[/b];
  [b]finally[/b]
    ReleaseDC(hWnd, dc);
  [b]end[/b];
[b]end[/b];
  Mit Zitat antworten Zitat