Moin Matti,
schau Dir doch mal die Funktion
GetDCEx an.
Bei mir bringt die im WMNCPAINT-Event zwar immer 0 zurück (obwohl die übergebenen Werte eigentlich stimmen sollten), aber vielleicht funktioniert es ja bei Dir.
(GetLastError meldet mir auch "Der Vorgang wurde erfolgreich durchgeführt"
)
Mein Aufruf:
hdc := GetDCEx(self.Handle,msg.RGN,DCX_WINDOW or DCX_INTERSECTRGN);