Speicher-Überlauf bei LoadImage



  • Hallo,

    ich habe eine globale HBITMAP-Variable, und nutze sie wie folgt:

    //globale Variable
    HBITMAP g_hBmp;
    
    //globale Funktion, wird ereignisorientiert aufgerufen
    //und in ihr der Pfad des Bitmap-Files übergeben
    void g_LoadImage(CString path)
    {
        g_hBmp = (HBITMAP)::LoadImage(NULL, path,
                            IMAGE_BITMAP,
                            0,
                            0,
                            LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE)
    }
    
    //in meiner Dialog-Klasse
    void MyDialog::EineFunktion()
    {
        //irgendwann kommt folgender Aufruf:
        CBitmap bmp;
        bmp.Attach( g_hBmp );
    
        //bmp wird manipuliert (neue Farben, Strecken, Stauchen etc.)
    
        //Bitmap auf Button setzen
        ( (CButton *)GetDlgItem(IDC_BUTTON) )->SetBitmap( (HBITMAP)bmp );
    }
    

    Das Problem, das ich habe ist: jedesmal wenn ich LoadImage aufrufe, wird mein Speicher größer 😞

    Weiss jemand wie ich das umgehe?



  • Was erwartes du? Du erzeugst aus deinem bild eine DIB, der speicherverbrauch muss also größer werden, wo soll er die dib sonst ablegen?



  • Danke CMatt,

    jetzt wo du das so sagst... 👍


Anmelden zum Antworten