Bitmap verschwindet wenn es verdeckt war



  • Hallo zusammen,

    ich wollte ein kleines Autostart-Menü machen. Ganz oben habe ich ein kleines Bild eingebunden, quasi eine Überschrift... sobald ich allerdings mit einem Fenster über mein Autostartfenster gehe, verwische ich das Bild. War mein Fenster sogar ganz im Hintergrund und ich hole es zurück in den Vordergrund, bleibt das Bild ganz verschwunden.

    Hier ein wenig Code wie ich was gemacht habe:

    //Erstellung des Hauptfenster
    hWnd = CreateWindow(szWindowClass, szTitle, WS_EX_TOPMOST | WS_POPUP | WS_BORDER,
    (screenWidth/2)-(windowWidth/2), (screenHeight/2)-(windowHeight/2), windowWidth, windowHeight, 
    NULL, NULL, hInstance, NULL);
    
    //Bild laden...
    case WM_CREATE:
      hBitMap = (HBITMAP)LoadImage(0,"header.bmp",IMAGE_BITMAP, 0, 0,
        LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_CREATEDIBSECTION); 
      if(hBitMap==NULL)
      {
        MessageBox(hWnd,"Bild konnte nicht geladen werden","Error",0);
        return -1;
      }
      GetObject (hBitMap, sizeof (BITMAP), &bitmap) ;
    
    //Bild zeichnen...
    case WM_PAINT:
      hdc = BeginPaint(hWnd, &ps);
      // TODO: Hier den Zeichnungscode hinzufügen.
      hdcMem = CreateCompatibleDC (hdc) ;
      SelectObject (hdcMem, hBitMap) ;
      BitBlt (hdc, ((windowWidth/2)-(bitmap.bmWidth
        /2)),25,bitmap.bmWidth,bitmap.bmHeight, 
      hdcMem, 0, 0, SRCCOPY) ;
      EndPaint(hWnd, &ps);
      break;
    

    Was mache ich falsch? Ein falsches Flag vielleicht? Habe ich was vergessen?

    Danke schon einmal im Voraus!



  • SORRY!

    Hab den Fehler gefunden, ich hatte die Zeile

    DeleteDC (hdcMem) ;
    

    in

    case WM_DESTROY:
    

    geschrieben.. sehr doof von mir, habe den code beim "Kopieren&Einfügen" nicht aufmerksam genug angeschaut... 🙄

    ..und mal wieder greift auch Murphys law - ich finde die Lösung direkt nach dem Posten im Forum... 😡

    :xmas2:


Anmelden zum Antworten