procedure ScreenshotBook(bmp: THandle);
stdcall;
var ScreenDC, CompDC: HDC;
ScreenBitmap: HBitmap;
h: THandle;
begin
ScreenDC := GetDC(0);
//DC des gesamten Bildschirm abfragen
CompDC := CreateCompatibleDC(ScreenDC);
//einen neuen DC anlegen, der gleich dem DC vom Bildschirm ist??
ScreenBitmap := CreateCompatibleBitmap(ScreenDC,
GetDeviceCaps(ScreenDC,HORZRES),
GetDeviceCaps(ScreenDC,VERTRES));
//hä? ein Bitmap wird angelegt ... und dann?
h := SelectObject(CompDC,ScreenBitmap);
//das versteh ich auch nicht so genau...
BitBlt(CompDC,0,0,GetDeviceCaps(ScreenDC,HORZRES),
GetDeviceCaps(ScreenDC,VERTRES),ScreenDC,0,0,SRCCOPY);
//klar, hier wird der Inhalt aus ScreenDC in CompDC kopiert
BitBlt(bmp,0,0,300,300,compDC,0,0,SRCCOPY);
//Inhalt von CompDC in ein mitgeliefertes Handle
DeleteObject(SelectObject(CompDC,h));
//?? und vor allem: warum selectObject in deleteObject??
DeleteDC(CompDC);
//künstlich erzeugtes DC freigeben
ReleaseDC(0,ScreenDC);
//Freigeben des abgefragten Bildschrim-DCs
end;