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
Název | Popis |
---|---|
CBitmapButton::CBitmapButton | CBitmapButton Vytvoří objekt. |
Veřejné metody
Název | 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 | Zakázáno | Aplikace |
---|---|---|---|---|
× | Bitmapa | |||
× | × | 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
Vytvořte jeden až čtyři rastrové obrázky pro tlačítko.
Sestavení CBitmapButton objektu.
Voláním funkce Create vytvořte ovládací prvek tlačítko Windows a připojte ho k objektu
CBitmapButton
.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
Vytvořte jeden až čtyři rastrové obrázky pro tlačítko.
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ží.
Nastavte titulek tlačítka na hodnotu, například MYIMAGE, a definujte symbol tlačítka, například IDC_MYIMAGE.
Ve skriptu prostředků vaší 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 titulek tlačítka v kroku 3. U titulku tlačítka MYIMAGE by například ID 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.
Do třídy dialogového okna aplikace (odvozené z
CDialog
) přidejteCBitmapButton
členský objekt.V rutině OnInitDialog objektu
CBitmapButton
volejte funkci Automatické načítání objektu pomocí parametrů ID ovládacího prvku tlačítka a ukazatele objektuCDialog
this
.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 CBitmapButton
ovládacích prvcích naleznete v tématu Ovládací prvky.
Hierarchie dědičnosti
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.
Návratová 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.
Návratová 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();