Unabhängig der Bedeutung
function SelectObject(DC: HDC; hObject: THandle): THandle;
gibt das
Handle des ersetzten Objekts. In diesem Fall
h := SelectObject(CompDC,ScreenBitmap);
die der Bitmap.
DeleteObject(SelectObject(CompDC,h));
löscht die virtuelle Bitmap.
Warum aber SelectObject in DeleteObject? SelectObject ersetzt nur das Objekt.
Der einzige Grund der mir auf die Schnelle einfällt ist, dass SelectObject zur Sicherheit eingesetzt wurde, denn hier wird nur ersetzt, d. h. es kommt ein
Handle zurück, oder Null oder Error. Ist das zurückgegebene
Handle nicht gültig, wird auch nichts gelöscht. Man kann mit den Aufruf nichts verlieren aber evtl. etwas gewinnen. (meine unfachmännische Meinung)