CButton - Nochmals: Button mit Bitmap



  • Einfache Frage: Ich designe einen Dialog. Wie kann ich nun einem Button ein Symbol oder ein Bitmap zuweisen, z.B. ein Button mit dem "Rechnersymbol"?!

    [ Dieser Beitrag wurde am 04.02.2002 um 09:57 Uhr von Unix-Tom editiert. ]



  • Hi,

    hab ich noch nicht gemacht, aber müsste in etwa so gehn.
    Im Ressourcen Editor beim Button->Eigenschaften->Formate->Bitmap ankreuzen. Ein Bitmap zu den Ressourcen hinzufügen.

    Dann mit
    m_Button->LoadBitmap(....) //m_Button is Membervariable vom Button

    hoffe das hilft dir weiter
    mfg

    [ Dieser Beitrag wurde am 29.01.2002 um 11:20 Uhr von Lightbringer editiert. ]



  • Hallo, vielen Dank für den Tip..

    ...leider geht es so nicht. Loadbitmap ist keine Methode der CButton Klasse!!!



  • Hat keiner 'ne IDEE??



  • hi,

    du brauchst ne variable vom Typ CBitmap. Da gibts dann die funktion LoadBitmap. damit kannste dann n bitmap, dass du als resource hast, in die variable laden. dann kannste mit SetBitmap das bild auf dein button packen
    hier mal n beispiel:

    CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP); // IDB_BITMAP is die ID der resource
    m_Button.SetBitmap(bitmap);
    

    ich hoffe es funzt
    m_Button->Set

    [ Dieser Beitrag wurde am 29.01.2002 um 13:21 Uhr von Dommel editiert. ]

    [ Dieser Beitrag wurde am 29.01.2002 um 13:23 Uhr von Dommel editiert. ]



  • hmmmh, ich bekomme beim compilieren zwar keinen Fehler, aber der Button hat auch kein Bitmap!!!

    HILFE !!!



  • Hi,

    du führst wahrscheinlich danach kein Update des Fensters durch. Du musst dem Fenster sagen, dass es sich nochmal neu zeichnen muss.
    UpdateWindow(); müsste funzen
    oder Invalidate()....ich glaub ReneG hat heute schon was dazu geschrieben.

    mfg



  • Nein, ich habe schon ein UpdateWindow drin!!!

    Übrigens, ich rufe den Code in der OnInitDialog Funktion auf. Ist er dort fehl am Platz?



  • hmhhh, der Code scheint wohl an der Stelle falsch zu sein. Für ich den Code z.B. in einer Funktion aus klappt alles.

    Das Problem ist nur, dass es halt beim Dialogstart sein sollte. Wie kann ich dass hinkriegen?????????

    [ Dieser Beitrag wurde am 29.01.2002 um 14:14 Uhr von AnTri editiert. ]



  • probier mal dass du für CBitmap ne membervariable nimmst und keine 'normale', in der funktion deklarierte variable.
    also bei mir funzt es zumindest damit, auch in InitDialog



  • Versuch es doch statt mit nem Bitmap mit einem Icon. Das kannst du so laden.

    HICON hIcon= AfxGetApp()->LoadIcon(IDI_Euro);
        m_CtrlEuro.SetIcon(hIcon);
    

    IDI_Euro ist der name des Icons und m_CtrlEuro ist die Control Variable des Buttons.

    (Ich selbst hab das für einen Euro umrechner benutzt).

    Falls es mit dem Bitmap nicht klappt versuch es halt so. So müsste es klappen.

    Mfg, Heiko



  • Das mit der Member-Variable funktioniert auch im OnInit tadellos. Die Frage ist nur warum geht es nur mit einer Member...

    Vielen Dank für die große Hilfe und die vielen Beiträge.



  • Kleine frage...
    wie bekomm ich den ein Bitmap als resource? bzw. wie weis ich dem Bitmap eine ID zu?



  • Nur mit einer Member, weil sonst das Bitmap nach verlassen der Methode wieder futsch ist....
    oder sehe ich das falsch?!?



  • @timo:
    denk ich auch, dass das dann futsch is

    @pho_no:
    bei den rsourcen ob mit rechts auf 'DeinProg Resourcen *' klicken. da dann 'einfügen', 'bitmap' und 'neu'. schon haste n neues bitmap in den resourcen. mit rechtsklick auf das bitmap und dann auf eigenschaften kannste die ID ändern



  • HBITMAP eigenbitmap;
    eigenbitmap = ::LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1));
    
    CButton* pbmp = (CButton*) GetDlgItem(IDC_BUTTON1);
    pbmp->SendMessage(BM_SETIMAGE, IMAGE_BITMAP, (LONG) eigenbitmap);
    

    Der Code ist selbsterklärend und einfach in die oninitdialog einbauen


Anmelden zum Antworten