Problem mit 2 Bitmaps
-
Hi @ all ,
ich bins mal wieder
... diesmal häng ich an zwei Bitmaps ... ich hab 2 bmp´s in die resourcen genommen und will diese anzeigen lassen, leider hab ich immer wieder das problem das ich nur eine der beiden angezeigt bekomme und die andere nicht und ich blick einfach nich dahinter worans liegt....
hier mal das codebeispiel:
static HBITMAP hBitmap, hBitmap1; static BITMAP bitmap, bitmap1; HDC hdc, hdcMem, hdc1, hdcMem1; HINSTANCE hInstance ; PAINTSTRUCT ps, ps1; switch (iMsg) { case WM_CREATE : // MenuBitmap hInstance = ((LPCREATESTRUCT) lParam)->hInstance; hBitmap1 = LoadBitmap (hInstance, "IDB_MENU"); GetObject (hBitmap1, sizeof (BITMAP), &bitmap1); // Hintergrunbild hInstance = ((LPCREATESTRUCT) lParam)->hInstance ; hBitmap = LoadBitmap (hInstance, "IDB_BG") ; GetObject (hBitmap, sizeof (BITMAP), &bitmap) ; case WM_PAINT : // Grösse und Position von MenuBitmap hdc1 = BeginPaint (hwnd, &ps1) ; hdcMem1 = CreateCompatibleDC (hdc1) ; SelectObject (hdcMem1, hBitmap1) ; BitBlt (hdc1, 100, 100, bitmap1.bmWidth, bitmap1.bmHeight, hdcMem1, 0, 0, SRCCOPY); DeleteDC (hdcMem1) ; EndPaint (hwnd, &ps1) ; // Grösse und Position von Hintergrund hdc = BeginPaint (hwnd, &ps) ; hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, hBitmap) ; BitBlt (hdc, 110, 100, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY) ; DeleteDC (hdcMem) ; EndPaint (hwnd, &ps) ; return 0;
Abgearbeitet wird legiglich das erste der beiden bmp´s ... ich lösche bei beiden ja hdcMem und beenden Paint wieder um dann neu zu zeichnen... ich hänge .. nur weiss ich nich genau wo ...
thx a lot schonmal im vorraus ...
so long
[ Dieser Beitrag wurde am 31.05.2003 um 21:55 Uhr von return0 editiert. ]
-
auch wenn es nichts hilft: sollte nicht alles, was gezeichnet wird`, in einem BeginPaint() - EndPaint() block gezeichnet werden?
-
hi f00lish,
soweit mir bekannt geht das dann mit
hdc = BeginPaint .... ... ... EndPaint (....)
funktioniert ja auch wunderbar .. jedenfalls bei einem bmp
... nur das zweite wird nichmehr gezeichnet ... aber ich versuch auch ma noch deine Variante ... vieleicht hilfts
so long ...
-
Ok Problem gelöst... ich poste hier ma grad noch schnell den Code falls nochmal jemand das problem hat .... vieleicht auch was für die FAQ .. hab nix dergleichen gefunden ....
# static HBITMAP hBitmap, hBitmap1; static BITMAP bitmap, bitmap1; HDC hdc, hdcMem; HINSTANCE hInstance ; PAINTSTRUCT ps; switch (iMsg) { case WM_CREATE : // MenuBitmap hInstance = ((LPCREATESTRUCT) lParam)->hInstance; hBitmap1 = LoadBitmap (hInstance, "IDB_MENU"); GetObject (hBitmap1, sizeof (BITMAP), &bitmap1); // Hintergrunbild hInstance = ((LPCREATESTRUCT) lParam)->hInstance ; hBitmap = LoadBitmap (hInstance, "IDB_BG") ; GetObject (hBitmap, sizeof (BITMAP), &bitmap) ; case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, hBitmap1) ; // Menubitmap BitBlt (hdc, 100, 100, bitmap1.bmWidth, bitmap1.bmHeight, hdcMem, 0, 0, SRCCOPY); DeleteDC (hdcMem); hdcMem = CreateCompatibleDC (hdc); SelectObject (hdcMem, hBitmap); // Hintergrundbitmap BitBlt (hdc, 110, 100, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY) ; DeleteDC (hdcMem) ; EndPaint (hwnd, &ps) ;
So long ...