?
Auf die Schnelle, ohne es getestet zu haben:
HBITMAP hbmpOldBitsSrc, hbmpNewLayer, hbmpLayer;
HDC hdcBmpMemSrc, hdcBmpMemDest;
BITMAP bmInfo;
// 1. Bitmap-Resource laden:
hbmpLayer = LoadBitmap(g_hInst, MAKEINTRESOURCE(BMP_MAIN_MENU_BAR));
// 2. Bitmap-Infos einholen:
GetObject(hbmpLayer, sizeof(BITMAP), &bmInfo);
// 3. Speicherkontexte erstellen:
hdcBmpMemSrc = CreateCompatibleDC(NULL);
hdcBmpMemDest = CreateCompatibleDC(NULL);
// 4. geladene Bitmap in Speicherkontext einsetzen:
hbmpOldBitsSrc = (HBITMAP)SelectObject(hdcBmpMemSrc, hbmpLayer);
// 4.1. Bitmap passender Größe für Zielkontext erzeugen
hbmpNewLayer = CreateCompatibleBitmap(hdcBmpMemDest, iWndMainXSize, iWndMainYSize);
// und in Zielkontext bringen
HBITMAP hbmpDstOld = (HBITMAP) SelectObject(hdcBmpMemDest, hbmpNewLayer);
// 5. Bitmap vergrößern (neue Größe steht in iWndMainXSize und iWndMainYSize):
StretchBlt(hdcBmpMemDest, 0, 0, iWndMainXSize, iWndMainYSize,
hdcBmpMemSrc, 0, 0, bmInfo.bmWidth, bmInfo.bmHeight, SRCCOPY);
// 5.1. neue Bitmap aus Zielkontext holen
SelectObject(hdcBmpMemDest, hbmpDstOld);
// Weiter Arbeiten mit dem Bitmaphandle (hbmpNewLayer)
//
// ...
//
// 6. GDI-Clean Up:
DeleteObject(hbmpNewLayer);
DeleteObject(SelectObject(hdcBmpMemSrc, hbmpOldBitsSrc));
DeleteDC(hdcBmpMemSrc);
DeleteDC(hdcBmpMemDest);