#include BOOL DrawBitmap(HDC dc, int x, int y, HBITMAP hbm) { HDC dcMem; BITMAP bm; HWND hwndBitmap = NULL; BOOL fSuccess; BOOL fDcCreated = FALSE; if (hbm == NULL) return FALSE; /* Ausdehnung des Rasterbildes ermitteln */ if (!GetObject(hbm, sizeof(bm), &bm)) return FALSE; if (dc == NULL) { /* Wenn kein Ausgabekontext vorhanden ist, */ /* wird einer für das aktive Fenster erzeugt */ hwndBitmap = GetActiveWindow(); dc = GetDC(hwndBitmap); if (dc != NULL) fDcCreated = TRUE; else return FALSE; } dcMem = CreateCompatibleDC(dc); SelectObject(dcMem, hbm); fSuccess = BitBlt(dc, x, y, bm.bmWidth, bm.bmHeight, dcMem, 0, 0, SRCCOPY); DeleteDC(dcMem); /* Nur den oben angelegten Ausgabekontext wieder freigeben */ if (fDcCreated) ReleaseDC(hwndBitmap, dc); return fSuccess; }