Bild in Dialog einfügen

gisi

Mitglied
Ich brauche Hilfe,

ich versuche schon längere Zeit ein Bild in einen Dialog einzufügen, der Versuch ist, bis jetzt, allerdings kläglich gescheitert
Vielleicht weis jemand von euch ein Tutorial!!

lg gisi
 
Die einfachste Variante ist:

A) eine Bitmap in die Ressourcen einfügen (Ressource hinzufügen)
B) dem Dialog im Dialogeditor ein Picture Control (was auch nur ein Static ist) hinzufügen
C) in den Eigenschaften des Picture Controls das Property Bild auf die Ressource-ID deiner Bitmap setzen
 
Hi,
klappt das auch, wenn man das Projekt in C geschrieben hat? Bei mir wird die Bitmap nämlich nur im Editor angezeigt. Nach dem compilieren is sie weg...
 
Die Win32-Api ist auch reines C, das sollte problemlos klappen.

Prüf mal, ob das .rc-File auch tatsächlich in deinem Projekt eingebunden ist (kommt vor). Wenn ja, dann besorg dir mal den ResourceHacker (Freeware), damit kannst du prüfen, ob die Bitmap in deinen Resourcen enthalten ist.
 
Zuletzt bearbeitet:
Hi Endurion,
endlich mal eine Antwort, danke!

Das habe ich beides schon gemacht. Die Bitmap ist laut ResHack eingebunden, es kommt zwar eine AccessViolation, die kommt jedoch auch beim Dialog...

Ich weiß echt nicht, an was das noch liegen könnte...
 
Schau, ob du der Name der Bilddatei in Resource.h mit dem im .rc File uebereinstimmt. Ich habe mal so einen Fall gehabt:

Resources.h:
#define IDB_MEINBILD 100

Resources.rc
IDB_MIENBILD BITMAP "bla.bmp"

Der Compiler sagt in dem Fall auch nix..
 
Hi!
Und mit welchem Quellcode fügt man dann das Bild z.b. in ein Fenster oder eine Dialogbox ein?

Xodery
 
Ich code zwar nur mit reinen API, (schließlich soll man keine Klassen verwenden, die schlecht implentiert sind).

die resource-datei (rc)
Code:
ID_BITMAP1 BITMAP "schloss.bmp"
CONTROL "Picture0",IDM_LOCK,"STATIC",SS_BITMAP |WS_CHILD |WS_VISIBLE ,7,9,48,48

die cpp -Datei
Code:
case WM_PAINT:
hbit = GetDlgItem(hDlg,IDM_LOCK);
HDC hDC, MemDCExercising,hdia;
    PAINTSTRUCT Ps;
    HBITMAP bmpExercising;
hDC = BeginPaint(hbit, &Ps);

        // Load the bitmap from the resource
        bmpExercising = LoadBitmap( MyInstance, MAKEINTRESOURCE(1000));
        // Create a memory device compatible with the above DC variable
        MemDCExercising = CreateCompatibleDC(hDC);
             // Select the new bitmap
             SelectObject(MemDCExercising, bmpExercising);

        // Copy the bits from the memory DC into the current dc
        BitBlt(hDC, 10, 10, 450, 400, MemDCExercising, 0, 0, SRCCOPY);

        // Restore the old bitmap
        DeleteDC(MemDCExercising);
        DeleteObject(bmpExercising);
        EndPaint(hbit, &Ps);

Achja IDM_LOCK müsstest du als Konstante sowohl in der Resourcedatei als auch in der CPP-Datei definieren. Oder schreibst extra einen Resourceheader.
 
Zurück