Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Bitmap wie Button verwenden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.04.2003, 10:41 Uhr
~Michi
Gast


Hi,
ich würde gerne einem wie unten geladenem Bitmap eine Funktion zuweisen, um z.B. einen Mausklick auf das Bitmap abzufangen.
Kann mir jemand bitte ein kleines Codebeispiel für c++ geben.


CString szFilename3_3 = "D\3_3.BMP";
HBITMAP hBmp3_3 = (HBITMAP)::LoadImage(NULL,szFilename3_3, IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CBitmap bmp3_3;
bmp3_3.Attach(hBmp3_3);
CClientDC dc3_3(this);
CDC bmDC3_3;
bmDC3_3.CreateCompatibleDC(&dc3_3);
CBitmap *pOldbmp3_3 = bmDC3_3.SelectObject(&bmp3_3);
BITMAP bi3_3;
bmp3_3.GetBitmap(&bi3_3);
dc3_3.BitBlt(775,150,bi3_3.bmWidth,bi3_3.bmHeight,&bmDC3_3,0,0,SRCCOPY);
bmDC3_3.SelectObject(pOldbmp3_3);



Danke !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.04.2003, 12:23 Uhr
~Heiko
Gast


Hi,
Du kannst das bitmap z.B. in ein picture-Fenster malen und dann die Message BN_CLICKED abfangen
Musst unter Properties das ganze nur umbenennen, dass es nicht mehr IDC_STATIC heisst weil du es sonst nicht in den Klassenassi bekommst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.04.2003, 15:34 Uhr
~Michi
Gast


Hi Heiko,
gute Idee das mit dem Picture Fenster, nur müsste ich das Bitmap vom Programm aus in das Picture Fenster malen, da ich die Bitmaps dynamisch (siehe Code oben) reinladen muss.

Wie geht das ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.04.2003, 16:03 Uhr
~Heiko
Gast


Diesen Code mit dem filename des bitmap als Parameter müsstest du der Methode übergeben die dein Bitmap ins Picturefeld malen soll


C++:
    CString szFilename ="meinBMP.bmp"; //diese zeile ist überflüssig da eigenlich parameter deine maldasbitmap mehtode
    
    HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

    CBitmap bild;
    bild.Attach(hBmp);

             BITMAP bild_header;
             bild.GetBitmap(&bild_header);

    CWnd* wp = GetDlgItem(IDC_STATIC_BITMAP..); //hier IDC von deinem Picturefeld eingeben)
    CDC *pDC = wp->GetDC();
    CDC imageDC;
            
    imageDC.CreateCompatibleDC(pDC);

    imageDC.SelectObject( &bild);


    pDC->BitBlt(0, 0, bild_header.bmWidth, bild_header.bmHeight, &imageDC, 0, 0, SRCCOPY);
        
    imageDC.DeleteDC();
    wp->ReleaseDC(pDC);


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.04.2003, 20:20 Uhr
~Thomas
Gast


Also ich persönlich würde mir eine eigene Klasse basteln, abgeleitet von CButton. Die Funktion PreSubclassWindow überschreiben und da dann einfügen:ModifyStyle(0, BS_OWNERDRAW | BS_PUSHBUTTON);

In der Funktion DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) kannst du dann dein Bild malen. Immerhin willst du bestimmt auch das Bild verrücken wenn der Button gedrückt wird... Vielleicht sogar noch das Bild ausgrauen wenn dein "Button" inaktiv ist
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: