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 ...


Anmelden zum Antworten