Guten Morgen Emil!
Die einfachste Antwort und zugleich auch die erschreckenste: ich wusste es nicht besser.
So sieht das Beispiel aus was Du hier rein gestellt hast.
Delphi-Quellcode:
BOOL CaptureScreen(HBITMAP& hBitmap)
{
HDC hDCScreen = ::CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
const int cx = ::GetDeviceCaps(hDCScreen, HORZRES);
const int cy = ::GetDeviceCaps(hDCScreen, VERTRES);
HDC hDCMem = ::CreateCompatibleDC(hDCScreen);
hBitmap = ::CreateCompatibleBitmap(hDCScreen, cx, cy);
HBITMAP hBmpOld = (HBITMAP)::SelectObject(hDCMem, hBitmap);
// Note: CAPTUREBLT flag is required to capture layered windows
DWORD dwRop = SRCCOPY | CAPTUREBLT;
BOOL bRet = ::BitBlt(hDCMem, 0, 0, cx, cy, hDCScreen, 0, 0, dwRop);
::SelectObject(hDCMem, hBmpOld);
::DeleteDC(hDCMem);
::DeleteDC(hDCScreen);
return bRet;
}
Um ehrlich zu sein war ich schon happy das ich es so umsetzen konnte, mit Deiner zweiten "So-Wirds-Gemacht" Variante komme ich noch nicht wirklich voran aber alles wird gut
Zitat:
1. GetDesktopWindow
2. GetDC\CreateDC
3. GetWindowRect
4. StretchBlt via BitBlt.
5. ReleaseDC