ressourcen(gif) zur laufzeit laden



  • Ich habe ein paar ressourcen mit bestimmten id's in meinen projekt und möchte zur laufzeit z.B. ein neues gif-Bild per Pfadangabe in die ressource ID_xyz laden und damit arbeiten usw. wie geht das?

    thx im vorraus



  • Hi,
    Hinweis:
    weiß nicht, ob es dir was hilft, aber du kannst die Ressourcen einer .exe oder .dll Datei mit folgenden Funktionen manipulieren:

    BeginUpdateResource();
    UpdateResource();
    EndUpdateResource();
    

    Dann:
    Wieso willst du das Gifbild als Ressource?
    Es gibt doch genügend Klassen, die Bilder laden und anzeigen können 😕

    Grüße Rapha



  • ...genau so etwas suche ich, Rapha!

    Ich habe ca. 70 verschiedene Bitmaps - je nach Bedingung will ich die entsprechende Bitmap auf mein Button "erscheinen lassen".
    Ich suche nach so etwas wie "Lade-Bitmap-Aus-bmp-File-Funktion".



  • Hi,
    kein Problem, dafür gibts die WinApi Funktion LoadImage

    HANDLE LoadImage(
      HINSTANCE hinst,   // handle of the instance containing the image
      LPCTSTR lpszName,  // name or identifier of image
      UINT uType,        // type of image
      int cxDesired,     // desired width
      int cyDesired,     // desired height
      UINT fuLoad        // load flags
    );
    

    z.B. so:

    HBITMAP hBitmap; 
    hBitmap = (HBITMAP)LoadImage(NULL, szFilename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    CBitmap MyBitmap;
    MyBitmap.Attach(hBitmap);
    

    Grüße Rapha



  • Danke! 🙂



  • Ich hätte nicht so voreilig sein sollen... 😞

    mit 'LoadImage' bekomme ich ein Handle zum Bitmap.

    Rapha schrieb:

    .
    z.B. so:

    HBITMAP hBitmap; 
    hBitmap = (HBITMAP)LoadImage(NULL, szFilename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    CBitmap MyBitmap;
    MyBitmap.Attach(hBitmap);
    

    Grüße Rapha

    Und mit 'Attach' kann ich mein Bitmap-File einer CBitmap-Variablen zuweisen, soweit so gut. Ich möchte das Bitmap-Bild allerdings auf einem Button "kleben" 🤡 (am liebsten wäre mir ein Button vom Typ CBitmapButton). Aber das habe ich bisher nicht geschafft. Kann mir jemand einen Hinweis geben?



  • Dazu musst du die Bitmapvariable als eine Membervariable erstellen (dass sie auch die ganze Zeit verfügbar bleibt und nicht gelöscht wird).
    Dann machst du einfach soetwas (IDC_BUTTON = ID des Buttons; m_Bitmap = Bitmap)(vorher nicht vergessen den Style des Buttons auf Bitmap umzustellen):

    CButton* pButton = (CButton*) GetDlgItem(IDC_BUTTON);
    pButton->SetBitmap((HBITMAP)m_Bitmap);
    

    Grüße Rapha
    ps. Irgendwann solltest du das Bitmap noch mit m_Bitmap->DeleteObject() löschen



  • Es geht darum ich hab eine Funktion gefunden, welche mir die gif-Bilder aus den Ressourcen so wie ich will anzeigt, aber diese Funktion benötigt eben diese Ressourcen; und genau die will ich zur Laufzeit ändern. Also brache ich sowas wie "Lada Pfad/Datei.gif in die Ressource IDC_XYZ".
    Es wäre genial, wenn es sowas irgendwo gibt.

    bitte sagt nicht, das geht nicht 😞

    Oder kennt ihr was bessere was mehrer gif Bilder transparent über einander malen kann? Ich hab tagelang danach gesucht und bin froh endlich was gefunden zu haben, nur eben die ressourcen...


Log in to reply