(immernoch) Newbee: Bitmap in Fenster laden
-
So, hab mal ne Beispiel-WndProc geschrieben, kannst dich ja vielleicht daran orientieren:
LRESULT CALLBACK MainProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { static HBITMAP hBitmap; static BITMAP bmp; static int bmpWidth,bmpHeight; switch(uMsg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hDC = BeginPaint(hWnd,&ps); HDC hMemDC = CreateCompatibleDC(hDC); SelectObject(hMemDC,hBitmap); BitBlt(hDC,0,0,bmpWidth,bmpHeight,hMemDC,0,0,SRCCOPY); DeleteDC(hMemDC); EndPaint(hWnd,&ps); return 0; } break; case WM_CREATE: { hBitmap = LoadBitmap(hInst,TEXT("my_bitmap")); GetObject(hBitmap,sizeof(BITMAP),&bmp); bmpWidth = bmp.bmWidth; bmpHeight = bmp.bmHeight; return 0; } break; case WM_DESTROY: { PostQuitMessage(0); // Programm beenden return 0; } break; } return DefWindowProc(hWnd,uMsg,wParam,lParam); }
cya
-
wo kann ich den die position des Bitmaps festlegen
-
BitBlt(hDC,0,0,bmpWidth,bmpHeight,hMemDC,0,0,SRCCOPY);
-
suuper!
Du hast recht gehabt, by the way...ich war ja wohl auch zu blöd die fkt-beschreibung richtig zu lesen...
wenn ich BitBlt(hDestDC, 0, 0, bmpWidth, bHeight, hScrDC, 0, 0, SRCCOPY) übergebe dann bekomme ich die Bitmapis ja klar!
aber...
wenn ich die Fkt ShowBitmapResource() NICHT in WM_PAINT aufrufe, erscheint die Bitmap nur für einen kurzen Moment und ist danach gleich wieder mim Hintergrund überpinselt...
Naja, aber das krieg ich auch noch raus.
thx auf alle Fälle![ Dieser Beitrag wurde am 22.12.2002 um 17:39 Uhr von ultraschatten editiert. ]
-
Ja, das geht auch ganz einfach. Du machst einfach zwei Funktionen!
z.B.:
HBITMAP us_CreateBitmap(int nResID);
und
void us_ShowBitmap(HBITMAP hBitmap);evtl. könntest du noch die Höhe/Breite des Bitmaps bei us_ShowBitmap übergeben.
cya
EDIT: us steht für ultraschatten
[ Dieser Beitrag wurde am 22.12.2002 um 17:37 Uhr von MagiC Creator editiert. ]
-
@MagiC Creator
Wo gibst Du in Deinem Code die Bitmap mit DeleteObject wieder frei?
Wo restaurierst Du den Gerätekontext nachdem Du mit SelectObject etwas ihn eingetragen hast?
Wenn man Speicher anfordert, sollte man ihn auch wieder freigeben. Den Gerätekontext so verlassen, wie man ihn vorgefunden hat.Rallod
-
Heftige Anschuldigungen.
-
OOPs... muss ich wohl übersehen haben... naja, wird nicht wieder vorkommen, master!
cya
-
NENN MICH NIE NIE WIEDER master
Gruß Rallod
-
Der vorhergehende Text stammt nicht von mir.
Mfg Rallod