Udostępnij za pośrednictwem


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

  1. Utwórz jeden do czterech obrazów map bitowych dla przycisku.

  2. Skonstruuj obiekt CBitmapButton .

  3. Wywołaj funkcję Create, aby utworzyć kontrolkę przycisku systemu Windows i dołączyć ją do CBitmapButton obiektu.

  4. 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

  1. Utwórz jeden do czterech obrazów map bitowych dla przycisku.

  2. 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.

  3. Ustaw podpis przycisku na wartość taką jak "MYIMAGE" i zdefiniuj symbol przycisku, taki jak IDC_MYIMAGE.

  4. 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.

  5. W klasie okna dialogowego aplikacji (pochodzącej z CDialogklasy ) dodaj obiekt członkowski CBitmapButton .

  6. CDialog W procedurze OnInitDialog obiektu wywołaj CBitmapButton funkcję AutoLoad obiektu, używając parametrów identyfikatora kontrolki przycisku i CDialog 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 CDialogobiektu 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 CBitmapButtonprogramu , zobacz Kontrolki.

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

CWnd

CButton

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();

Zobacz też

Przykład MFC CTRLTEST
Klasa CButton
Wykres hierarchii