Klasa CBitmapButton
Tworzy kontrolki pushbutton oznaczone mapami bitowymi zamiast tekstu.
Składnia
class CBitmapButton : public CButton
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CBitmapButton::CBitmapButton | CBitmapButton Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CBitmapButton::AutoLoad | Kojarzy przycisk w oknie dialogowym z obiektem CBitmapButton klasy, ładuje mapy bitowe według nazwy i rozmiaruje przycisk, aby dopasować go do mapy bitowej. |
CBitmapButton::LoadBitmaps | Inicjuje obiekt, ładując co najmniej jeden nazwany zasób mapy bitowej z pliku zasobu aplikacji i dołączając mapy bitowe do obiektu. |
CBitmapButton::SizeToContent | Rozmiary przycisku w celu uwzględnienia mapy bitowej. |
Uwagi
CBitmapButton
obiekty zawierają maksymalnie cztery mapy bitowe, które zawierają obrazy dla różnych stanów, które można założyć: w górę (lub normalnie), w dół (lub wybrane), fokus i wyłączone. Wymagana jest tylko pierwsza mapa bitowa; pozostałe są opcjonalne.
Obrazy z przyciskiem mapy bitowej obejmują obramowanie wokół obrazu, a także sam obraz. Obramowanie zwykle odgrywa rolę w wyświetlaniu stanu przycisku. Na przykład mapa bitowa dla stanu ukierunkowanego jest zwykle jak mapa bitowa dla stanu w górę, ale z przerywanym prostokątem w zestawie od obramowania lub grubą linią ciągłą na obramowanie. Mapa bitowa dla stanu wyłączonego zwykle przypomina jedną dla stanu w górę, ale ma mniejszy kontrast (jak wygaszony lub szary wybór menu).
Te mapy bitowe mogą mieć dowolny rozmiar, ale wszystkie są traktowane tak, jakby miały taki sam rozmiar jak mapa bitowa dla stanu up.
Różne aplikacje wymagają różnych kombinacji obrazów map bitowych:
W górę | W dół | Ustawiono fokus | Disabled | Aplikacja |
---|---|---|---|---|
× | Bitmapa | |||
× | × | Przycisk bez stylu WS_TABSTOP | ||
× | × | × | × | Przycisk okna dialogowego ze wszystkimi stanami |
× | × | × | Przycisk okna dialogowego ze stylem WS_TABSTOP |
Podczas tworzenia kontrolki przycisku mapy bitowej ustaw styl BS_OWNERDRAW, aby określić, że przycisk jest rysowany przez właściciela. Dzięki temu system Windows wysyła komunikaty WM_MEASUREITEM i WM_DRAWITEM dla przycisku; platforma obsługuje te komunikaty i zarządza wyglądem przycisku.
Aby utworzyć kontrolkę przycisku mapy bitowej w obszarze klienta okna
Utwórz jeden do czterech obrazów map bitowych dla przycisku.
Skonstruuj obiekt CBitmapButton .
Wywołaj funkcję Create, aby utworzyć kontrolkę przycisku systemu Windows i dołączyć ją do
CBitmapButton
obiektu.Wywołaj funkcję składową LoadBitmaps, aby załadować zasoby mapy bitowej po utworzeniu przycisku mapy bitowej.
Aby dołączyć kontrolkę przycisku mapy bitowej w oknie dialogowym
Utwórz jeden do czterech obrazów map bitowych dla przycisku.
Utwórz szablon okna dialogowego z przyciskiem rysowania właściciela umieszczonym w miejscu, w którym ma zostać umieszczony przycisk mapy bitowej. Rozmiar przycisku w szablonie nie ma znaczenia.
Ustaw podpis przycisku na wartość taką jak "MYIMAGE" i zdefiniuj symbol przycisku, taki jak IDC_MYIMAGE.
W skrypicie zasobu aplikacji nadaj każdemu obrazowi utworzonemu dla przycisku identyfikator skonstruowany przez dołączenie jednej z liter "U", "D", "F" lub "X" (w przypadku w górę, w dół, fokusu i wyłączenia) do ciągu użytego dla podpisu przycisku w kroku 3. Dla podpisu przycisku "MYIMAGE", na przykład identyfikatory to "MYIMAGEU", "MYIMAGED", "MYIMAGEF" i "MYIMAGEX". Należy określić identyfikator map bitowych w cudzysłowach podwójnych. W przeciwnym razie edytor zasobów przypisze liczbę całkowitą do zasobu, a MFC zakończy się niepowodzeniem podczas ładowania obrazu.
W klasie okna dialogowego aplikacji (pochodzącej z
CDialog
klasy ) dodaj obiekt członkowskiCBitmapButton
.CDialog
W procedurze OnInitDialog obiektu wywołajCBitmapButton
funkcję AutoLoad obiektu, używając parametrów identyfikatora kontrolki przycisku iCDialog
wskaźnika obiektuthis
.
Jeśli chcesz obsługiwać komunikaty powiadomień systemu Windows, takie jak BN_CLICKED, wysyłane przez kontrolkę przycisku mapy bitowej do elementu nadrzędnego (zazwyczaj klasy pochodzącej z CDialog
), dodaj do CDialog
obiektu pochodnego wpis mapy komunikatów i funkcję składową programu obsługi komunikatów dla każdego komunikatu. Powiadomienia wysyłane przez CBitmapButton
obiekt są takie same jak powiadomienia wysyłane przez obiekt CButton .
Klasa CToolBar ma inne podejście do przycisków mapy bitowej.
Aby uzyskać więcej informacji na temat CBitmapButton
programu , zobacz Kontrolki.
Hierarchia dziedziczenia
CBitmapButton
Wymagania
Nagłówek: afxext.h
CBitmapButton::AutoLoad
Kojarzy przycisk w oknie dialogowym z obiektem CBitmapButton
klasy, ładuje mapy bitowe według nazwy i rozmiaruje przycisk, aby dopasować go do mapy bitowej.
BOOL AutoLoad(
UINT nID,
CWnd* pParent);
Parametry
Nid
Identyfikator kontrolki przycisku.
PParent
Wskaźnik do obiektu, który jest właścicielem przycisku.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
AutoLoad
Użyj funkcji , aby zainicjować przycisk rysowania właściciela w oknie dialogowym jako przycisk mapy bitowej. Instrukcje dotyczące korzystania z tej funkcji znajdują się w uwagach dotyczących CBitmapButton
klasy.
Przykład
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
Tworzy obiekt CBitmapButton
.
CBitmapButton();
Uwagi
Po utworzeniu obiektu C++ CBitmapButton
wywołaj metodę CButton::Create , aby utworzyć kontrolkę przycisku systemu Windows i dołączyć ją do CBitmapButton
obiektu.
Przykład
// Declare a bitmap button object on the stack.
CBitmapButton myButton;
// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;
CBitmapButton::LoadBitmaps
Użyj tej funkcji, jeśli chcesz załadować obrazy mapy bitowej identyfikowane przez ich nazwy zasobów lub numery identyfikatorów lub gdy nie można użyć AutoLoad
funkcji, ponieważ na przykład tworzysz przycisk mapy bitowej, który nie jest częścią okna dialogowego.
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);
Parametry
lpszBitmapResource
Wskazuje ciąg o wartości null, który zawiera nazwę mapy bitowej dla normalnego lub "w górę" przycisku mapy bitowej. Wymagany.
lpszBitmapResourceSel
Wskazuje ciąg o wartości null, który zawiera nazwę mapy bitowej dla wybranego lub "w dół" przycisku mapy bitowej. Może mieć wartość NULL.
lpszBitmapResourceFocus
Wskazuje ciąg o wartości null, który zawiera nazwę mapy bitowej dla stanu fokusu przycisku mapy bitowej. Może mieć wartość NULL.
lpszBitmapResourceDisabled
Wskazuje ciąg o wartości null, który zawiera nazwę mapy bitowej dla stanu wyłączonego przycisku mapy bitowej. Może mieć wartość NULL.
nIDBitmapResource
Określa identyfikator zasobu mapy bitowej dla normalnego lub "w górę" stanu przycisku mapy bitowej. Wymagany.
nIDBitmapResourceSel
Określa identyfikator zasobu mapy bitowej dla wybranego lub "w dół" stanu przycisku mapy bitowej. Może być 0.
nIDBitmapResourceFocus
Określa numer identyfikatora zasobu mapy bitowej dla stanu fokusu przycisku mapy bitowej. Może być 0.
nIDBitmapResourceDisabled
Określa numer identyfikatora zasobu mapy bitowej dla stanu wyłączonego przycisku mapy bitowej. Może być 0.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
// 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
Wywołaj tę funkcję, aby zmienić rozmiar przycisku mapy bitowej na rozmiar mapy bitowej.
void SizeToContent();
Przykład
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();