CBitmapButton-Klasse
Erstellt Pushbutton-Steuerelemente, die mit Bitmapbildern statt mit Text bezeichnet sind.
Syntax
class CBitmapButton : public CButton
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CBitmapButton::CBitmapButton | Erstellt ein CBitmapButton -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CBitmapButton::AutoLoad | Ordnet eine Schaltfläche in einem Dialogfeld einem Objekt der CBitmapButton Klasse zu, lädt die Bitmap(n) anhand des Namens und passt die Schaltfläche an die Bitmap an. |
CBitmapButton::LoadBitmaps | Initialisiert das Objekt, indem eine oder mehrere benannte Bitmapressourcen aus der Ressourcendatei der Anwendung geladen und die Bitmaps an das Objekt angefügt werden. |
CBitmapButton::SizeToContent | Passt die Schaltfläche an, um die Bitmap aufzunehmen. |
Hinweise
CBitmapButton
Objekte enthalten bis zu vier Bitmaps, die Bilder für die verschiedenen Zustände enthalten, von denen eine Schaltfläche annehmen kann: nach oben (oder normal), unten (oder ausgewählt), fokussiert und deaktiviert. Nur die erste Bitmap ist erforderlich; die anderen sind optional.
Bitmap-Schaltflächenbilder enthalten den Rahmen um das Bild sowie das Bild selbst. Der Rahmen spielt in der Regel eine Rolle beim Anzeigen des Zustands der Schaltfläche. Die Bitmap für den fokussierten Zustand ist z. B. in der Regel wie die für den Aufwärtszustand, aber mit einem gestrichelten Rechteck vom Rahmen oder einer dicken einfarbigen Linie am Rahmen. Die Bitmap für den deaktivierten Zustand ähnelt in der Regel dem Zustand nach oben, weist jedoch einen niedrigeren Kontrast auf (z. B. eine abgeblendete oder abgeblendete Menüauswahl).
Diese Bitmaps können beliebig groß sein, aber alle werden so behandelt, als wären sie dieselbe Größe wie die Bitmap für den Up-Zustand.
Verschiedene Anwendungen erfordern unterschiedliche Kombinationen von Bitmapbildern:
Nach oben | Nach unten | Fokus | Disabled | Application |
---|---|---|---|---|
× | Bitmap | |||
× | × | Schaltfläche ohne WS_TABSTOP Formatvorlage | ||
× | × | × | × | Dialogfeldschaltfläche mit allen Zuständen |
× | × | × | Dialogfeldschaltfläche mit WS_TABSTOP Formatvorlage |
Legen Sie beim Erstellen eines Bitmap-Schaltflächen-Steuerelements die BS_OWNERDRAW Formatvorlage fest, um anzugeben, dass die Schaltfläche vom Besitzer gezeichnet wird. Dadurch sendet Windows die WM_MEASUREITEM und WM_DRAWITEM Nachrichten für die Schaltfläche; das Framework behandelt diese Nachrichten und verwaltet die Darstellung der Schaltfläche für Sie.
So erstellen Sie ein Bitmap-Schaltflächen-Steuerelement im Clientbereich eines Fensters
Erstellen Sie ein bis vier Bitmapbilder für die Schaltfläche.
Erstellen Sie das CBitmapButton-Objekt .
Rufen Sie die Create-Funktion auf, um das Windows-Schaltflächensteuerelement zu erstellen und an das
CBitmapButton
Objekt anzufügen.Rufen Sie die LoadBitmaps-Memberfunktion auf, um die Bitmapressourcen nach dem Erstellen der Bitmapschaltfläche zu laden.
So fügen Sie ein Bitmap-Schaltflächen-Steuerelement in ein Dialogfeld ein
Erstellen Sie ein bis vier Bitmapbilder für die Schaltfläche.
Erstellen Sie eine Dialogfeldvorlage mit einer Schaltfläche "Besitzer zeichnen", die an der Stelle positioniert ist, an der Sie die Bitmapschaltfläche verwenden möchten. Die Größe der Schaltfläche in der Vorlage spielt keine Rolle.
Legen Sie die Beschriftung der Schaltfläche auf einen Wert wie "MYIMAGE" fest, und definieren Sie ein Symbol für die Schaltfläche, z. B. IDC_MYIMAGE.
Geben Sie im Ressourcenskript Ihrer Anwendung jedem der Bilder, die für die Schaltfläche erstellt wurden, eine ID, die erstellt wird, indem Sie einen der Buchstaben "U", "D", "F" oder "X" (für nach oben, unten, fokussiert und deaktiviert) an die Zeichenfolge anfügen, die für die Schaltflächenbeschriftung in Schritt 3 verwendet wird. Für die Schaltflächenbeschriftung "MYIMAGE", z. B. "MYIMAGEU", "MYIMAGED", "MYIMAGEF" und "MYIMAGEX". Sie müssen die ID Ihrer Bitmaps in doppelten Anführungszeichen angeben. Andernfalls weist der Ressourcen-Editor der Ressource eine ganze Zahl zu, und MFC schlägt beim Laden des Bilds fehl.
Fügen Sie in der Dialogklasse Ihrer Anwendung (abgeleitet von
CDialog
) einCBitmapButton
Memberobjekt hinzu.Rufen Sie in der OnInitDialog-Routine des
CDialog
Objekts die AutoLoad-Funktion desCBitmapButton
Objekts auf, indem Sie als Parameter die Steuerelement-ID der Schaltfläche und den Zeiger desthis
CDialog
Objekts verwenden.
Wenn Sie Windows-Benachrichtigungen behandeln möchten, z. B. BN_CLICKED, die von einem Bitmap-Schaltflächen-Steuerelement an das übergeordnete Steuerelement gesendet werden (in der Regel eine klasse abgeleitet von CDialog
), fügen Sie dem CDialog
abgeleiteten Objekt eine Meldungszuordnungseingabe und eine Message-Handler-Memberfunktion für jede Nachricht hinzu. Die von einem CBitmapButton
Objekt gesendeten Benachrichtigungen entsprechen denen, die von einem CButton-Objekt gesendet werden.
Die Klasse CToolBar verwendet einen anderen Ansatz für Bitmapschaltflächen.
Weitere Informationen finden CBitmapButton
Sie unter "Steuerelemente".
Vererbungshierarchie
CBitmapButton
Anforderungen
Header: afxext.h
CBitmapButton::AutoLoad
Ordnet eine Schaltfläche in einem Dialogfeld einem Objekt der CBitmapButton
Klasse zu, lädt die Bitmap(n) anhand des Namens und passt die Schaltfläche an die Bitmap an.
BOOL AutoLoad(
UINT nID,
CWnd* pParent);
Parameter
Nid
Die Steuerelement-ID der Schaltfläche.
pParent
Zeigen Sie auf das Objekt, das die Schaltfläche besitzt.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Verwenden Sie die AutoLoad
Funktion, um eine Schaltfläche "Besitzer-Zeichnen" in einem Dialogfeld als Bitmapschaltfläche zu initialisieren. Anweisungen zur Verwendung dieser Funktion finden Sie in den Hinweisen für die CBitmapButton
Klasse.
Beispiel
CBitmapButton myButton;
// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);
CBitmapButton::CBitmapButton
Erstellt ein CBitmapButton
-Objekt.
CBitmapButton();
Hinweise
Rufen Sie nach dem Erstellen des C++CBitmapButton
-Objekts CButton::Create auf, um das Windows-Schaltflächensteuerelement zu erstellen, und fügen Sie es an das CBitmapButton
Objekt an.
Beispiel
// Declare a bitmap button object on the stack.
CBitmapButton myButton;
// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;
CBitmapButton::LoadBitmaps
Verwenden Sie diese Funktion, wenn Sie Bitmapbilder laden möchten, die durch ihre Ressourcennamen oder ID-Nummern identifiziert wurden, oder wenn Sie die AutoLoad
Funktion nicht verwenden können, da Sie beispielsweise eine Bitmapschaltfläche erstellen, die nicht Teil eines Dialogfelds ist.
BOOL LoadBitmaps(
LPCTSTR lpszBitmapResource,
LPCTSTR lpszBitmapResourceSel = NULL,
LPCTSTR lpszBitmapResourceFocus = NULL,
LPCTSTR lpszBitmapResourceDisabled = NULL);
BOOL LoadBitmaps(
UINT nIDBitmapResource,
UINT nIDBitmapResourceSel = 0,
UINT nIDBitmapResourceFocus = 0,
UINT nIDBitmapResourceDisabled = 0);
Parameter
lpszBitmapResource
Verweist auf die mit Null beendete Zeichenfolge, die den Namen der Bitmap für den normalen oder "up"-Zustand einer Bitmapschaltfläche enthält. Erforderlich.
lpszBitmapResourceSel
Verweist auf die mit Null beendete Zeichenfolge, die den Namen der Bitmap für den ausgewählten oder "down"-Zustand einer Bitmapschaltfläche enthält. Darf NULL sein.
lpszBitmapResourceFocus
Verweist auf die mit Null beendete Zeichenfolge, die den Namen der Bitmap für den fokussierten Zustand einer Bitmapschaltfläche enthält. Darf NULL sein.
lpszBitmapResourceDisabled
Verweist auf die mit Null beendete Zeichenfolge, die den Namen der Bitmap für den deaktivierten Zustand einer Bitmapschaltfläche enthält. Darf NULL sein.
nIDBitmapResource
Gibt die Ressourcen-ID-Nummer der Bitmapressource für den normalen oder "up"-Zustand einer Bitmapschaltfläche an. Erforderlich.
nIDBitmapResourceSel
Gibt die Ressourcen-ID-Nummer der Bitmapressource für den ausgewählten oder "down"-Zustand einer Bitmapschaltfläche an. Mai 0.
nIDBitmapResourceFocus
Gibt die Ressourcen-ID-Nummer der Bitmapressource für den fokussierten Zustand einer Bitmapschaltfläche an. Mai 0.
nIDBitmapResourceDisabled
Gibt die Ressourcen-ID-Nummer der Bitmapressource für den deaktivierten Zustand einer Bitmapschaltfläche an. Mai 0.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Beispiel
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
CBitmapButton::SizeToContent
Rufen Sie diese Funktion auf, um die Größe einer Bitmapschaltfläche auf die Größe der Bitmap zu ändern.
void SizeToContent();
Beispiel
CBitmapButton *pmyButton = new CBitmapButton();
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();