Button mit Farbe oder Bild



  • Hallo,
    Ich will einen Button mit einem Bitmap erstellen. Wenn ich allerdings im Dialogfeldeditor von VC++ 6.0 einen Button erzeuge und dann in dessen Eigenschaftsdialog das Feld Bitmap aktiviere, kann ich kein Bitmap auswählen. Ausserdem habe ich versucht ein Bitmap während der Laufzeit zu laden und zuzuweisen. das Bitmap hatte ich vorher im Ressourceneditor erstellt, doch es hat nicht geklappt. In der MSDN-Hilfe bin ich auf die Klasse CBitmapButton gestoßen, kennt sich jemand mit ihr aus ?
    Ausserdem will ich wissen wie man die Farbe eines Buttons ändern kann, auch zur laufzeit. 😕
    Danke für Antworten.
    Turbobrain 😃



  • Kenne das Problem, hab aber hier im Forum schon eine Lösung gefunden:

    //Instance-Handle besorgen 
        HINSTANCE hInstance = AfxGetInstanceHandle(); 
        //Bitmap-Handle besorgen und Bitmap laden 
        HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP)); 
        //Bitmap auf Button bringen 
        m_buttonCtrl.SetBitmap(hBitmap);
    
        // Bedeutung
        // m_buttonCtrl: Control des Buttons
        // IDB_BITMAP:  Bitmap Ressource
     //Code kann z.B. im OnInitDialog der Dialogfeldklasse stehen
    


  • Vielen Dank für die Antwort. Hat sofort geklappt. 👍 🙂
    Viele Beispiele in FAQ oder im Forum sind schlecht und funktionieren nicht.
    Danke
    Turbobrain 😃



  • Hallo,
    mir ist bei der Umsetzung des Codes noch die frage eingefallen, ob es auch ohne Control-Variable geht. Das wäre besser für mich. Ich habe es schon mit der GetDlgItem- Funktion probiert. Wenn ich aber deinen Code benutzte und statt
    m_buttonCtrl mir einen Zeiger vom Typ CButton* auf des zu ändernden Button hole, der Code ist dann so:

    CButton* Button = (CButton*) GetDlgItem(IDC_BUTTON);
    //Instance-Handle besorgen 
    HINSTANCE hInstance = AfxGetInstanceHandle(); 
    //Bitmap-Handle besorgen und Bitmap laden 
    HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP)); 
    //Bitmap auf Button bringen 
    Button->SetBitmap(hBitmap);
    

    Aber wenn ich ihn ausfürhre sehe ich keine Veränderung des Buttons.
    Warum? 😕 😕 😮
    Danke schon im Vorraus.
    Turbobrain 😃



  • ich habe da eine anschliessende frage. diesen code bsp finde ich öfters, und er ist auch so weit io.
    jetzt plane ich gerade eine mdi anwendung mit CFormView's. wenn ich in einer child form ein button mit bitmap bg erstellen möchte, wie verfahre ich dann?

    //Instance-Handle besorgen 
    HINSTANCE hInstance = AfxGetInstanceHandle(); 
    //Bitmap-Handle besorgen und Bitmap laden 
    HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP)); 
    //Bitmap auf Button bringen 
    m_buttonCtrl.SetBitmap(hBitmap); 
    
    // Bedeutung 
    // m_buttonCtrl: Control des Buttons 
    // IDB_BITMAP: Bitmap Ressource 
    
    //Code kann z.B. im OnInitDialog der Dialogfeldklasse stehen
    

    ^in bezug auf die letzte comment zeile

    hat da jemand einen tipp für mich? bin auf der suche, aber leider finde ich nur sehr wenig praktische dokumentation von CFormView und MDI.
    danke im voraus


Log in to reply