Bitmap als Hintergrundbild eines Dialoges
-
Hallo!
ich hab ein Problem mit meinem Programm...
ich lade ein Bitmap und möchte dieses als Hintergrund für meinen Dialog, also anstatt dem 'grau' mein bild.
das laden funktioniert auch alles soweit, nur das anzeigen... das geht nichtich benutze dazu die Funktion StretchDIBits in der Dialogroutine bei Nachricht WM_ERASEBKGND
also:
...
BYTE *LoadDIBImage(char *image) { DWORD dwFileSize, dwBytesRead; HANDLE hFile; BYTE *pData; hFile=CreateFile(image,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile==INVALID_HANDLE_VALUE) return NULL; dwFileSize=GetFileSize(hFile,NULL); pData=(BYTE *)malloc(dwFileSize); if(pData==NULL) { CloseHandle(hFile); return NULL; } ReadFile(hFile,pData,dwFileSize,&dwBytesRead,NULL); if(dwFileSize!=dwBytesRead) { CloseHandle(hFile); free(pData); return NULL; } return pData; } case WM_INITDIALOG: ... pbmfh=(BITMAPFILEHEADER *)LoadImage(name); pbmi=(BITMAPINFO *)(pbmfh+1); pBits=(BYTE *)pbmfh + pbmfh->bfOffbits; sizex=pbmi->bmiHeader.biWidth; sizey=pbmi->bmiHeader.biHeight; ... return TRUE; case WM_ERASEBKND: hdc=(HDC)wParam; GetClientRect(hwndDlg,&r); StretchDIBits(hdc,0,0,r.right,r.bottom,0,0,sizex,sizey,pBits,pbmi,DIB_RGB_COLORS,SRCCOPY); return TRUE;Der Dialog ist immer ganz schwarz!
Kann mir da jemand bitte weiterhelfen?
weiß nicht mehr weiter...Danke...
mfg
-
Warum nimmst du nicht LoadBitmap/LoadImage, CreateCompatibleDC, SelectObject, StrechBlt - scheint mir irgendwie einfacher zu sein

-
flenders schrieb:
Warum nimmst du nicht LoadBitmap/LoadImage, CreateCompatibleDC, SelectObject, StrechBlt - scheint mir irgendwie einfacher zu sein

Kommt drauf an, ich denke das hat einen anderen gewissen Grund, nicht den Anfängerweg zu gehen.
@heike
wann wird den "WM_ERASEBKND" gesendet? Nieaber ab und an kommt mal ein "WM_ERASEBKGND", zum beispiel nach einem Resize
oder InvalidateRect