Bilder in CStatic



  • Hallo NG,

    leider noch eine Frage.

    Ich versuche in ein dynamisch erzeugtes Objekt CStatic ein Bild einzufügen.
    Da meine Kenntnisse nicht besonders gut sind, ...

    Bild = new CBitmap;
    Bild->LoadBitmap(TEXT("logo.bmp"));
    Static1 = new CStatic;
    Static1->Create(_T("Logo"), WS_CHILD|WS_VISIBLE|SS_CENTER|WS_BORDER|SS_BITMAP, 
        CRect(10,160,230,230), this);
    Static1->SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(Bild)));
    // Ich weiß, dass die letzte Zeile nicht stimmt,
    // aber ich weiß nicht wie ich es richtig machen soll
    

    Vielen Dank!

    Gruß Walter



  • Willst du das Bild aus den Resourcen laden?
    Dann mach es so:

    myStatic.Create(_T("my static"),WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),this);
        myStatic.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR) IDB_BITMAP1));
    

    Wenn du es von einer Datei laden willst dann musst du ::LoadImage mit LR_LOADFROMFILE benutzen.



  • Hab es nicht so ganz verstanden.
    Und ich glaube auch, dass ich nicht so recht weiß, was ich machen soll.

    ich will einfach nur ein Bild, welches in dem gleichen Verzeichnis wie die exe liegt, in mein CStatic dynamisch laden.

    myStatic->SetBitmap(::LoadBitmap(AfxGetInstanceHandle(),(LPCTSTR) IDB_BITMAP1));
    //Auf was bezieht sich die IDB_BITMAP1 bitte?
    
    //Auf mein CBitmap?
    

    Danke noch einmal!

    Gruß Walter



  • Ich hatte es aus den Resourcen geladen.

    Du musst wie gesagt mit ::LoadImage arbeiten

    HBITMAP hbmp = (HBITMAP) LoadImage(0,L"C:\\winnt\\Azul.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
        myStatic.SetBitmap(hbmp);
    


  • Irgendetwas geht bei mir nicht:

    'LR_LOADFROMFILE' : undeclared identifier

    Ich habe folgendes gelesen, kann aber nichts damit anfangen:

    lpszName
    [in] Identifies the image to load. If the hinst parameter is non-NULL and the fuLoad parameter does not include LR_LOADFROMFILE, lpszName is a pointer to a null-terminated string that contains the name of the image resource in the hinst module.
    If hinst is NULL and LR_LOADFROMFILE is not specified, the low-order word of this parameter must be the identifier of the OEM image to load. The OEM image identifiers are defined in Winuser.h and have the following prefixes: Prefix Description

    OBM_ OEM bitmaps
    OIC_ OEM icons
    OCR_ OEM cursors

    If the fuLoad parameter includes the LR_LOADFROMFILE value, lpszName is the name of the file that contains the image.

    Wenn ich 'LR_LOADFROMFILE' durch 0 ersetze, dann wird mein Programm zwar erstellt, aber kein Bild geladen.

    Habe ich eine Alternative?

    Danke!

    Gruß Walter

    [ Dieser Beitrag wurde am 25.09.2002 um 10:35 Uhr von Walter editiert. ]



  • ??? Sollte eigentlich gehen!
    In der Winuser.h sind diese defines alle drin.
    Mit der Abfrage WINVER >= 0x400. Vlt irgendwo das WINVER geändert?

    #define LR_DEFAULTCOLOR     0x0000
    #define LR_MONOCHROME       0x0001
    #define LR_COLOR            0x0002
    #define LR_COPYRETURNORG    0x0004
    #define LR_COPYDELETEORG    0x0008
    #define LR_LOADFROMFILE     0x0010
    #define LR_LOADTRANSPARENT  0x0020
    #define LR_DEFAULTSIZE      0x0040
    #define LR_VGACOLOR         0x0080
    #define LR_LOADMAP3DCOLORS  0x1000
    #define LR_CREATEDIBSECTION 0x2000
    #define LR_COPYFROMRESOURCE 0x4000
    #define LR_SHARED           0x8000
    


  • Alles ist so wie es ein soll, aber irgendetwas geht dennoch nicht.

    Ich habe keine Ahnung!

    Kann ich auf Alternativen zurückgreifen?

    Gruß Walter



  • Trag statt der Konstante 0x10 ein.
    Dann sollte es gehen.



  • Es tut sich aber dennoch NIX.

    Das Static wird erzeugt, aber kein Bild erscheint?!?

    Ich bin völlig ratlos.

    Du hattest oben von "Aus den Resourcen laden" gesprochen, gibt es eine andere Methode?

    Gruß Walter

    [ Dieser Beitrag wurde am 25.09.2002 um 11:05 Uhr von Walter editiert. ]



  • Bist du auch sicher das das Bitmap dort ist wo es sein soll?

    Wenn du es nach Release oder Debug kopiert hast und du dein Programm über VS startest ist der aktuelle Pfad der wo deine Sourcen drin liegen.

    Kopier die Datei mal nach c:\ und trag dann c:\\meinbild.bmp ein.



  • Ich habe noch was gefunden:

    unrecognized character escape sequence

    ist eine Warnung auf

    LoadImage(0,L"C:\\logo.bmp", ...
    

    kann es daran liegen?



  • Du musst immer \\ für einen \

    Wenn du C:\Bild.bmp haben möchtest -> C:\\Bild.bmp

    \t = Tab
    \n = New Line
    \\ = \
    ...



  • Das alles ist mir bekannt, ich habe C gelernt (Konsole und so ...), jedoch kein C++ oder MFC.

    Und der Umstieg ist sehr mühsam, besonders die GUI.

    Aber Danke für den Hinweis.

    Ich suche immer noch ein Alternative.

    Kennst Du zufällig eine?

    Danke.

    Gruß Walter



  • Ich versteh ehrlich gesagt wieso es nicht bei dir funktioniert. 😕
    Bei mir geht das ohne Probleme.

    Du könntest auch wie oben schon gesagt das mit Resourcen lösen.

    Drück mal Strg+R und dann klickst du auf den Button 'Import'

    Dann suchst du dir deine Bitmap (Vorher 'Alle Dateien' auswählen).
    Dann gibst du der Bitmap ne ResourceID z.B. IDB_MEINBILD

    Dann funktioniert es wie ich es in meinem ersten Posting beschrieben hab.



  • Das hat wunderbar geklappt!

    Danke!

    Vielen Dank!!!

    Gruß Walter


Log in to reply