Bild aus Ressourcen laden/darstellen



  • Hi, und zwar mit:

    case WM_PAINT:
           {
               HANDLE hbitmap = (HBITMAP)LoadImage(NULL,"bild.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
               HDC hdc = GetWindowDC(hWnd);
               HDC hdc_ram = CreateCompatibleDC(NULL);
               SelectObject(hdc_ram, hbitmap);
               BitBlt(hdc,0,0,398,234,hdc_ram,0,0,SRCCOPY);
               break;
           }
    

    kann ich ein Bild aus einer Datei laden und darstellen, nun möcht' ich aber keine extra Dateien bei dem Programm haben, sondern Das Bild aus den Ressourcen laden und darstellen.

    Mit

    case WM_PAINT:
           {
               HANDLE hbitmap = (HBITMAP)LoadImage(NULL,MAKEINTRESOURCE(ID_BITMAP_01),IMAGE_BITMAP,0,0,LR_SHARED);
               HDC hdc = GetWindowDC(hWnd);
               HDC hdc_ram = CreateCompatibleDC(NULL);
               SelectObject(hdc_ram, hbitmap);
               BitBlt(hdc,0,0,398,234,hdc_ram,0,0,SRCCOPY);
               break;
           }
    

    res.h

    #define ID_BITMAP_01 1
    

    res.rc

    #include "res.h"
    ID_BITMAP_01 BITMAP "nfs_mw.bmp"
    

    bekomme ich das Bild nicht zu sehen 😞

    Ich hoff mir kann jemand sagen wie ich es richtig machen kann,

    Danke

    mfg Dr!v3r



  • sorry, hab was vergessen -.-

    HANDLE hbitmap = (HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(ID_BITMAP_01),IMAGE_BITMAP,0,0,LR_SHARED);

    muss es natürlich heissen.

    mfg



  • wie wäre es so

    [cpp]
    case WM_PAINT:
    {
     PAINTSTRUCT ps;
     HBITMAP hBitMap  = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(ID_BITMAP_01),IMAGE_BITMAP, 0, 0, LR_SHARED);
    
     HDC hdc = BeginPaint(hwnd, &ps);
     HDC hdc_ram = CreateCompatibleDC (hdc) ;
     SelectObject (hdc_ram, hBitMap) ;
     BitBlt (hdc, 0, 0, 398, 234, hdc_ram, 0, 0, SRCCOPY);
     DeleteDC (hdc_ram) ;
     DeleteDC (hdc) ;
     EndPaint(hwnd, &ps);
    }
    [/cpp]
    

    Habs zwar nich getestet müsste aber gehen 😃
    MFG Ascharan



  • Da muss aber noch 'hBitMap' freigegeben werden und das Inhalt, modifiziert durch SelectObject, muss wiederhergestellt werden, siehe MSDN zu SelectObject.


Anmelden zum Antworten