Sdílet prostřednictvím


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

Tento článek popisuje, jak přidat tlačítko panelu nástrojů, které obsahuje ovládací prvek Windows na panel nástrojů. V prostředí MFC musí být tlačítko panelu nástrojů CMFCToolBarButton Třídy odvozené třídy, například CMFCToolBarComboBoxButton Třída, CMFCToolBarEditBoxButton Třída, CMFCDropDownToolbarButton Třída nebo CMFCToolBarMenuButton Třída.

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 nástrojů v sadě Visual Studio naleznete v článku Editor panelu nástrojů.

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

  3. V obslužné rutině zprávy, která zprávu zpracuje AFX_WM_RESETTOOLBAR , proveďte následující kroky:

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

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

Poznámka

Pokud jste v aplikaci povolili přizpůsobení, bude pravděpodobně nutné obnovit panel nástrojů pomocí tlačítka Obnovit na kartě Panely nástrojů dialogového okna Přizpůsobit , aby se po opětovném zkompilování zobrazil aktualizovaný ovládací prvek v aplikaci. Stav panelu nástrojů je uložen v registru systému Windows, přičemž informace registru jsou načítány a použity po spuštění metody ReplaceButton při spouštění aplikace.

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

Karta Příkazyv dialogovém okně Přizpůsobit obsahuje seznam příkazů, které jsou v aplikaci k dispozici. Ve výchozím nastavení dialogové okno Přizpůsobit zpracuje nabídky aplikace a vytvoří seznam standardních tlačítek panelu nástrojů v každé kategorii nabídek. Chcete-li zachovat rozšířené funkce, které ovládací prvky panelu nástrojů poskytují, je nutné nahradit standardní tlačítko panelu nástrojů vlastním ovládacím prvku v dialogovém okně Přizpůsobit .

Když povolíte přizpůsobení, vytvoříte dialogové okno Přizpůsobit v obslužné rutině OnViewCustomize přizpůsobení pomocí CMFCToolBarsCustomizeDialog třída . Před zobrazením dialogového okna Přizpůsobit voláním CMFCToolBarsCustomizeDialog::Create, zavolejte CMFCToolBarsCustomizeDialog::ReplaceButton nahradit standardní tlačítko novým ovládacím prvku.

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

Tato část popisuje, jak vytvořit ovládací prvek Pole se seznamem Najít , který se zobrazí na panelu nástrojů a obsahuje nedávno 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 CEditView Třídy odvozené zobrazení.

Vytvoření ovládacího prvku Find

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

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

    1. V prostředcí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 nástrojů nové tlačítko s identifikátorem příkazu ID_EDIT_FIND.

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

    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. Toto ID se použije jako ID příkazu tlačítka pole se seznamem Najít .

      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 odvozenou CFindComboBoxz CComboBox Class.

  3. Ve třídě CFindComboBox přepište virtuální metodu PreTranslateMessage. Tato metoda umožní poli se seznamem zpracovat WM_KEYDOWN zprávu. 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 Najít odvozené z CMFCToolBarComboBoxButton Třída. V tomto příkladu se jmenuje 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. K získání indexu image použijte CCommandManager::GetCmdImageID_EDIT_FIND.

    3. Seznam dostupných stylů polí se seznamem najdete v tématu Styly pole 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í IMPLEMENT_SERIAL makra vytvořte trvalé tlačítko se seznamem. 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í CMFCToolBar::GetCommandButtons s načíst všechna tlačítka pole se seznamem ID_EDIT_FIND_COMBO Najít. V důsledku přizpůsobení může existovat několik kopií tlačítka se stejným identifikátorem příkazu.

  9. V obslužné rutině OnFindID_EDIT_FIND zprávy použijte CMFCToolBar::IsLastCommandFromButton k určení, zda byl příkaz najít odeslán z tlačítka pole se seznamem Najít. 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 musíte standardní tlačítko panelu nástrojů nahradit vlastním tlačítkem pole se seznamem Najít .

  2. V obslužné rutině AFX_WM_RESETTOOLBAR zkontrolujte ID panelu nástrojů, tj. WPARAM zprávy AFX_WM_RESETTOOLBAR. Pokud je ID panelu nástrojů stejné jako u panelu nástrojů, který obsahuje tlačítko pole se seznamem Najít, zavolejte CMFCToolBar::ReplaceButton nahradit tlačítko Najít (to znamená, že tlačítko s ID ID_EDIT_FIND) příkazu objektuCFindComboButton.

    Poznámka

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

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

V obslužné rutině OnViewCustomizepřizpůsobení zavolejte CMFCToolBarsCustomizeDialog::ReplaceButton nahradit tlačítko Najít (to znamená tlačítko s ID ID_EDIT_FINDpříkazu ) objektem CFindComboButton .

Viz také

Graf hierarchie
Třídy
CMFCToolBar – třída
CMFCToolBarButton – třída
CMFCToolBarComboBoxButton – třída
CMFCToolBarsCustomizeDialog – třída