Sdílet prostřednictvím


Návod: Umístění ovládacích prvků na panely nástrojů

Toto téma popisuje, jak na panel nástrojů přidat tlačítko obsahující ovládací prvek systému Windows.V aplikaci MFC musí být tlačítko panelu nástrojů třídou odvozenou z třídy Třída CMFCToolBarButton, například Třída CMFCToolBarComboBoxButton, Třída CMFCToolBarEditBoxButton, Třída CMFCDropDownToolbarButton nebo Třída CMFCToolBarMenuButton.

Přidávání ovládacích prvků na panely nástrojů

Chcete-li přidat ovládací prvek na panel nástrojů, postupujte takto:

  1. Zarezervujte si pro tlačítko zástupný identifikátor ID prostředku v nadřazeném prostředku panelu nástrojů.Další informace o vytváření tlačítek pomocí Editoru panelu nástrojů v aplikaci Visual Studio naleznete v tématu Editor panelu nástrojů.

  2. Zarezervujte pro tlačítko obrázek panelu nástrojů (ikonu tlačítka) ve všech rastrových obrázcích nadřazeného panelu nástrojů.

  3. V popisovači zpráv, který zpracovává zprávu AFX_WM_RESETTOOLBAR, proveďte následující akce:

    1. Vytvořte ovládací prvek tlačítka pomocí odvozené třídy CMFCToolbarButton.

    2. Nahraďte zástupné tlačítko novým ovládacím prvkem pomocí funkce CMFCToolBar::ReplaceButton.Objekt tlačítka lze vytvořit v zásobníku, protože funkce ReplaceButton objekt tlačítka zkopíruje a tuto kopii udržuje.

[!POZNÁMKA]

Bylo-li v aplikaci povoleno přizpůsobování, může se po opětovné kompilaci aktualizovaný ovládací prvek v aplikaci zobrazit až po obnovení panelu nástrojů pomocí tlačítka Obnovit na kartě Panely nástrojů v dialogovém okně Přizpůsobit.Stav panelu nástrojů je uložen v registru systému Windows, přičemž informace registru jsou načítány a použitý po spuštění metody ReplaceButton při spouštění aplikace.

Ovládací prvky a přizpůsobení panelu nástrojů

Karta Příkazy v dialogovém okně Přizpůsobit obsahuje seznam příkazů dostupných pro aplikaci.Dialogové okno Přizpůsobit standardně zpracovává nabídky aplikace a sestavuje seznam standardních tlačítek panelu nástrojů v každé kategorii nabídky.Chcete-li zachovat rozšířené funkce poskytované ovládacími prvky panelu nástrojů, je zapotřebí standardní tlačítko panelu nástrojů nahradit vlastním ovládacím prvkem v dialogovém okně Přizpůsobit.

Po povolení přizpůsobení vytvoříte dialogové okno Přizpůsobit v obslužné rutině přizpůsobení OnViewCustomize pomocí třídy Třída CMFCToolBarsCustomizeDialog.Před zobrazením dialogového okna Přizpůsobit zavoláním metody CMFCToolBarsCustomizeDialog::Create nahraďte standardní tlačítko novým ovládacím prvkem zavoláním metody CMFCToolBarsCustomizeDialog::ReplaceButton.

Příklad: Vytvoření pole se seznamem Find

Tato část popisuje, jak vytvořit ovládací prvek pole se seznamem Find, který se zobrazí na panelu nástrojů a obsahuje naposled použité vyhledávací řetězce.Uživatel může do ovládacího prvku zadat řetězec a stisknutím klávesy Enter prohledat dokument, nebo stisknout klávesu Escape a vrátit fokus na hlavní rámec.Tento příklad předpokládá, že dokument je zobrazen v zobrazení odvozeném z třídy Třída CEditView.

Tvorba ovládacího prvku Find

Nejprve vytvořte ovládací prvek pole se seznamem Find:

  1. Přidejte tlačítko a jeho příkazy do prostředků aplikace:

    1. V prostředích aplikace přidejte na panel nástrojů v aplikaci a ke všem rastrovým obrázkům přidruženým k panelu nové tlačítko s identifikátorem příkazu ID_EDIT_FIND.

    2. Vytvořte novou položku nabídky s identifikátorem příkazu ID_EDIT_FIND.

    3. Do tabulky řetězců přidejte nový řetězec "Najít text\nNajít" a přiřaďte k němu identifikátor příkazu ID_EDIT_FIND_COMBO.Tento identifikátor bude použit jako identifikátor příkazu tlačítka pole se seznamem Find.

      [!POZNÁMKA]

      Jelikož příkaz ID_EDIT_FIND je standardní příkaz zpracovávaný třídou CEditView, není nutné implementovat pro něj zvláštní obslužnou rutinu. Obslužnou rutinu je však zapotřebí implementovat pro nový příkaz ID_EDIT_FIND_COMBO.

  2. Vytvořte novou třídu, CFindComboBox, odvozenou z třídy Třída CComboBox.

  3. Ve třídě CFindComboBox přepište virtuální metodu PreTranslateMessage.Tato metoda poli se seznamem umožní zpracovávat zprávu WM_KEYDOWN.Stiskne-li uživatel klávesu Escape (VK_ESCAPE), vraťte fokus na okno hlavního rámce.Stiskne-li uživatel klávesu Enter (VK_ENTER), zašlete oknu hlavního rámce zprávu WM_COMMAND obsahující identifikátor příkazu ID_EDIT_FIND_COMBO.

  4. Vytvořte třídu pro tlačítko pole se seznamem Find odvozenou z třídy Třída CMFCToolBarComboBoxButton.V tomto příkladu je pojmenována CFindComboButton.

  5. Konstruktor třídy CMFCToolbarComboBoxButton přijímá tři parametry: identifikátor příkazu tlačítka, index obrázku tlačítka a styl pole se seznamem.Tyto parametry nastavte takto:

    1. Jako identifikátor příkazu předejte hodnotu ID_EDIT_FIND_COMBO.

    2. Pomocí metody CCommandManager::GetCmdImage a identifikátoru ID_EDIT_FIND načtěte index obrázku.

    3. Seznam dostupných stylů polí se seznamem naleznete v tématu Styly polí se seznamem.

  6. Ve třídě CFindComboButton přepište metodu CMFCToolbarComboBoxButton::CreateCombo.Zde by měl být vytvořen objekt CFindComboButton a vrácen ukazatel na něj.

  7. Pomocí makra IMPLEMENT_SERIAL převeďte tlačítko pole se seznamem na trvalé.Správce pracovního prostoru automaticky načte a uloží stav tlačítka v registru systému Windows.

  8. V aktuálním zobrazení dokumentu implementujte obslužnou rutinu příkazu ID_EDIT_FIND_COMBO.Pomocí metody CMFCToolBar::GetCommandButtons a identifikátoru ID_EDIT_FIND_COMBO načtěte všechna tlačítka pole se seznamem Find.V důsledku přizpůsobení může existovat několik kopií tlačítka se stejným identifikátorem příkazu.

  9. V popisovači zprávy ID_EDIT_FIND OnFind určete pomocí metody CMFCToolBar::IsLastCommandFromButton, zda byl z tlačítka pole se seznamem Find odeslán příkaz k vyhledávání.Pokud ano, vyhledejte text a přidejte vyhledávací řetězec do pole se seznamem.

Přidání ovládacího prvku Find na hlavní panel nástrojů

Chcete-li přidat tlačítko pole se seznamem na panel nástrojů, postupujte takto:

  1. V hlavním okně rámce implementujte popisovač zprávy AFX_WM_RESETTOOLBAROnToolbarReset.

    [!POZNÁMKA]

    Rozhraní pošle tuto zprávu hlavnímu oknu rámce ve chvíli, kdy je panel nástrojů inicializován během spuštění aplikace, nebo kdy je panel nástrojů obnoven během přizpůsobení.V obou případech je zapotřebí nahradit standardní tlačítko panelu nástrojů vlastním tlačítkem pole se seznamem Find.

  2. V popisovači zprávy AFX_WM_RESETTOOLBAR zkontrolujte identifikátor panelu nástrojů, tj. hodnotu WPARAM zprávy AFX_WM_RESETTOOLBAR.Je-li identifikátor panelu nástrojů roven panelu nástrojů obsahujícímu tlačítko pole se seznamem Find, nahraďte pomocí metody CMFCToolBar::ReplaceButton tlačítko Find (tj. tlačítko s identifikátorem příkazu ID_EDIT_FIND) objektem CFindComboButton.

    [!POZNÁMKA]

    Objekt CFindComboBox lze vytvořit v zásobníku, protože funkce ReplaceButton objekt tlačítka zkopíruje a tuto kopii udržuje.

Přidání ovládacího prvku Find do dialogového okna Přizpůsobit

V obslužné rutině přizpůsobení OnViewCustomize nahraďte pomocí metody CMFCToolBarsCustomizeDialog::ReplaceButton tlačítko Find (tj. tlačítko s identifikátorem příkazu ID_EDIT_FIND) objektem CFindComboButton.

Viz také

Referenční dokumentace

Graf hierarchie

Třída CMFCToolBar

Třída CMFCToolBarButton

Třída CMFCToolBarComboBoxButton

Třída CMFCToolBarsCustomizeDialog

Další zdroje

MFC – třídy