CBitmapButton – třída

Vytvoří ovládací prvky pushbutton označené rastrovými obrázky místo textu.

Syntaxe

class CBitmapButton : public CButton

Členové

Veřejné konstruktory

Jméno popis
CBitmapButton::CBitmapButton CBitmapButton Vytvoří objekt.

Veřejné metody

Jméno popis
CBitmapButton::AutoLoad Přidruží tlačítko v dialogovém okně k objektu CBitmapButton třídy, načte rastrové obrázky podle názvu a zmenšuje tlačítko tak, aby se vešly do rastrového obrázku.
CBitmapButton::LoadBitmaps Inicializuje objekt načtením jednoho nebo více pojmenovaných rastrových prostředků ze souboru prostředků aplikace a připojením rastrových obrázků k objektu.
CBitmapButton::SizeToContent Velikost tlačítka pro přizpůsobení rastrového obrázku.

Poznámky

CBitmapButton objekty obsahují až čtyři rastrové obrázky, které obsahují obrázky pro různé stavy, které tlačítko může předpokládat: nahoru (nebo normální), dolů (nebo vybrané), prioritní a zakázané. Vyžaduje se pouze první rastrový obrázek; ostatní jsou volitelné.

Obrázky rastrového tlačítka zahrnují ohraničení kolem obrázku i samotný obrázek. Ohraničení obvykle hraje roli při zobrazení stavu tlačítka. Například rastrový obrázek pro prioritní stav je obvykle stejný jako rastrový obrázek pro stav nahoru, ale s přerušovaným obdélníkem z ohraničení nebo tlustou plnou čárou na hranici. Rastrový obrázek pro zakázaný stav se obvykle podobá obrázku pro stav nahoru, ale má nižší kontrast (například šedě nebo šedý výběr nabídky).

Tyto rastrové obrázky mohou mít libovolnou velikost, ale všechny jsou považovány za stejné velikosti jako rastrový obrázek pro stav nahoru.

Různé aplikace vyžadují různé kombinace rastrových obrázků:

Nahoru Dolů Focused Disabled Aplikace
× Bitmapové
× × Tlačítko bez stylu WS_TABSTOP
× × × × Tlačítko dialogového okna se všemi stavy
× × × Tlačítko Dialogové okno se stylem WS_TABSTOP

Při vytváření ovládacího prvku bitmap-button nastavte styl BS_OWNERDRAW určit, že tlačítko je vykresleno vlastníkem. To způsobí, že systém Windows odešle WM_MEASUREITEM a WM_DRAWITEM zprávy pro tlačítko; rozhraní tyto zprávy zpracovává a spravuje vzhled tlačítka za vás.

Vytvoření ovládacího prvku bitmap-button v klientské oblasti okna

  1. Vytvořte jeden až čtyři rastrové obrázky pro tlačítko.

  2. Sestavení CBitmapButton objektu.

  3. Voláním funkce Create vytvořte ovládací prvek tlačítko Windows a připojte ho k objektuCBitmapButton.

  4. Voláním členské funkce LoadBitmaps načtěte rastrové prostředky po vytvoření rastrového tlačítka.

Zahrnutí ovládacího prvku bitmap-button do dialogového okna

  1. Vytvořte jeden až čtyři rastrové obrázky pro tlačítko.

  2. Vytvořte šablonu dialogového okna s tlačítkem pro kreslení vlastníka, které je umístěné tam, kde chcete použít rastrové tlačítko. Velikost tlačítka v šabloně nezáleží.

  3. Nastavte popis tlačítka na hodnotu, například MYIMAGE, a definujte symbol tlačítka, například IDC_MYIMAGE.

  4. Ve skriptu prostředků aplikace dejte každému z obrázků vytvořených pro tlačítko ID vytvořenému připojením jednoho z písmen "U", "D", "F" nebo "X" (pro nahoru, dolů, fokus a zakázáno) řetězec použitý pro tlačítko popis v kroku 3. U tlačítka popis "MYIMAGE", například ID by byla "MYIMAGEU", "MYIMAGED", " MYIMAGEF" a "MYIMAGEX". V dvojitých uvozovkách musíte zadat ID rastrových obrázků. V opačném případě editor prostředků přiřadí k prostředku celé číslo a prostředí MFC při načítání image selže.

  5. Do třídy dialogového okna aplikace (odvozené z CDialog) přidejte CBitmapButton členský objekt.

  6. V rutině OnInitDialog objektu CBitmapButton volejte funkci Automatické načítání objektu pomocí parametrů ID ovládacího prvku tlačítka a ukazatele objektu CDialogthis.CDialog

Pokud chcete zpracovávat zprávy oznámení systému Windows, jako je například BN_CLICKED, odeslané ovládacím prvku bitmap-button do nadřazeného objektu (obvykle třídy odvozené CDialog), přidejte do CDialog-odvozeného objektu položku message-map a členovou funkci obslužné rutiny zpráv pro každou zprávu. Oznámení odeslaná objektem CBitmapButton jsou stejná jako oznámení odesílaná objektem CButton .

Třída CToolBar používá jiný přístup k rastrovým tlačítkům.

Další informace o CBitmapButtonovládacích prvcích naleznete v tématu Ovládací prvky.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

Cwnd

Tlačítko tlačítka

CBitmapButton

Požadavky

Hlavička: afxext.h

CBitmapButton::AutoLoad

Přidruží tlačítko v dialogovém okně k objektu CBitmapButton třídy, načte rastrové obrázky podle názvu a zmenšuje tlačítko tak, aby se vešly do rastrového obrázku.

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

Parametry

Nid
ID ovládacího prvku tlačítka.

pParent
Ukazatel na objekt, který vlastní tlačítko.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

AutoLoad Pomocí funkce inicializujete tlačítko pro kreslení vlastníkem v dialogovém okně jako rastrové tlačítko. Pokyny pro použití této funkce jsou v poznámkách pro CBitmapButton třídu.

Příklad

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

CBitmapButton Vytvoří objekt.

CBitmapButton();

Poznámky

Po vytvoření objektu C++ CBitmapButton zavolejte CButton::Create a vytvořte ovládací prvek tlačítko Windows a připojte ho k objektu CBitmapButton .

Příklad

// Declare a bitmap button object on the stack.
CBitmapButton myButton;

// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;

CBitmapButton::LoadBitmaps

Tuto funkci použijte, pokud chcete načíst rastrové obrázky identifikované jejich názvy prostředků nebo čísly ID, nebo pokud tuto funkci nemůžete použít AutoLoad , protože například vytváříte rastrové tlačítko, které není součástí dialogového okna.

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
Odkazuje na řetězec ukončený hodnotou null, který obsahuje název rastrového obrázku pro normální nebo "nahoru" stav tlačítka rastru. Povinný:

lpszBitmapResourceSel
Odkazuje na řetězec ukončený hodnotou null, který obsahuje název rastrového obrázku pro vybraný nebo "down" stav tlačítka rastru. Může mít hodnotu NULL.

lpszBitmapResourceFocus
Odkazuje na řetězec ukončený hodnotou null, který obsahuje název rastrového obrázku pro stav prioritního tlačítka rastru. Může mít hodnotu NULL.

lpszBitmapResourceDisabled
Odkazuje na řetězec ukončený hodnotou null, který obsahuje název rastrového obrázku pro zakázaný stav rastrového tlačítka. Může mít hodnotu NULL.

nIDBitmapResource
Určuje číslo ID zdroje rastrového obrázku pro normální nebo "nahoru" stav tlačítka rastru. Povinný:

nIDBitmapResourceSel
Určuje číslo ID zdroje rastrového obrázku pro vybraný nebo "down" stav tlačítka rastru. Může být 0.

nIDBitmapResourceFocus
Určuje číslo ID zdroje rastrového obrázku pro stav prioritního tlačítka rastrového obrázku. Může být 0.

nIDBitmapResourceDisabled
Určuje číslo ID zdroje rastrového obrázku pro zakázaný stav tlačítka rastrového obrázku. Může být 0.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Příklad


// 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

Voláním této funkce změníte velikost rastrového tlačítka na velikost rastrového obrázku.

void SizeToContent();

Příklad

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

Viz také

MFC – ukázka CTRLTEST
CButton – třída
Graf hierarchie