CCmdUI – třída
Používá se pouze v rámci ON_UPDATE_COMMAND_UI
obslužné rutiny v -odvozené CCmdTarget
třídě.
Syntaxe
class CCmdUI
Členové
Veřejné metody
Název | Popis |
---|---|
CCmdUI::ContinueRouting | Informuje mechanismus směrování příkazů, aby pokračoval ve směrování aktuální zprávy v řetězci obslužných rutin. |
CCmdUI::Enable | Povolí nebo zakáže položku uživatelského rozhraní pro tento příkaz. |
CCmdUI::SetCheck | Nastaví stav kontroly položky uživatelského rozhraní pro tento příkaz. |
CCmdUI::SetRadio | Podobně jako členová SetCheck funkce, ale pracuje s rádiovými skupinami. |
CCmdUI::SetText | Nastaví text položky uživatelského rozhraní pro tento příkaz. |
Veřejné datové členy
Název | Popis |
---|---|
CCmdUI::m_nID | ID objektu uživatelského rozhraní. |
CCmdUI::m_nIndex | Index objektu uživatelského rozhraní. |
CCmdUI::m_pMenu | Odkazuje na nabídku reprezentovanou objektem CCmdUI . |
CCmdUI::m_pOther | Odkazuje na objekt okna, který oznámení odeslal. |
CCmdUI::m_pSubMenu | Odkazuje na obsaženou dílčí nabídku reprezentovanou objektem CCmdUI . |
Poznámky
CCmdUI
nemá základní třídu.
Když uživatel vaší aplikace stáhne nabídku, musí každá položka nabídky vědět, jestli se má zobrazit jako povolená nebo zakázaná. Cíl příkazu nabídky poskytuje tyto informace implementací obslužné rutiny ON_UPDATE_COMMAND_UI. Pro každý z objektů uživatelského rozhraní příkazu ve vaší aplikaci použijte okno Průvodce třídou nebo Vlastnosti (v zobrazení třídy) k vytvoření položky mapy zpráv a prototypu funkce pro každou obslužnou rutinu.
Když je nabídka stažena, rozhraní vyhledá a volá každou obslužnou rutinu ON_UPDATE_COMMAND_UI, každá obslužná rutina volá CCmdUI
členské funkce, jako Enable
Check
a a rozhraní pak odpovídajícím způsobem zobrazí každou položku nabídky.
Položku nabídky lze nahradit tlačítkem řídicího panelu nebo jiným objektem uživatelského rozhraní příkazu beze změny kódu v obslužné rutině ON_UPDATE_COMMAND_UI
.
Následující tabulka shrnuje vliv CCmdUI
členských funkcí na různé položky uživatelského rozhraní příkazů.
Položka uživatelského rozhraní | Povolit | SetCheck | SetRadio | Nastavit text |
---|---|---|---|---|
Položka nabídky | Povolí nebo zakáže | Kontroly nebo zrušení zaškrtnutí | Kontroly pomocí tečky | Nastaví text položky. |
Tlačítko panelu nástrojů | Povolí nebo zakáže | Vybere, zruší výběr nebo nedeterminuje. | Stejné jako SetCheck |
(Nepoužitelné) |
Podokno stavového řádku | Zviditelní nebo zviditelní text. | Nastaví automaticky otevírané okno nebo normální ohraničení. | Stejné jako SetCheck |
Nastaví text podokna. |
Normální tlačítko v CDialogBar |
Povolí nebo zakáže | Zaškrtnutí nebo zrušení zaškrtnutí políčka | Stejné jako SetCheck |
Nastavení textu tlačítka |
Normální ovládání v CDialogBar |
Povolí nebo zakáže | (Nepoužitelné) | (Nepoužitelné) | Nastaví text okna. |
Další informace o použití této třídy naleznete v tématu Jak aktualizovat objekty uživatelského rozhraní.
Hierarchie dědičnosti
CCmdUI
Požadavky
Hlavička: afxwin.h
CCmdUI::ContinueRouting
Voláním této členské funkce sdělíte mechanismu směrování příkazů, aby pokračoval ve směrování aktuální zprávy v řetězci obslužných rutin.
void ContinueRouting();
Poznámky
Jedná se o pokročilou členovou funkci, která by se měla použít ve spojení s obslužnou rutinou ON_COMMAND_EX, která vrací hodnotu FALSE. Další informace naleznete v technické poznámce 6.
CCmdUI::Enable
Voláním této členské funkce povolíte nebo zakážete položku uživatelského rozhraní pro tento příkaz.
virtual void Enable(BOOL bOn = TRUE);
Parametry
Bon
Pokud chcete položku povolit, nePRAVDA ji zakažte.
Příklad
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE, &CMyDoc::OnUpdateFileSave)
void CMyDoc::OnUpdateFileSave(CCmdUI *pCmdUI)
{
// Enable the menu item if the file has been modified.
pCmdUI->Enable(m_bModified);
}
CCmdUI::m_nID
ID položky nabídky, tlačítka panelu nástrojů nebo jiného objektu uživatelského rozhraní reprezentovaný objektem CCmdUI
.
UINT m_nID;
CCmdUI::m_nIndex
Index položky nabídky, tlačítka panelu nástrojů nebo jiného objektu uživatelského rozhraní reprezentovaný objektem CCmdUI
.
UINT m_nIndex;
CCmdUI::m_pMenu
Ukazatel (typuCMenu
) na nabídku reprezentovanou objektem CCmdUI
CMenu* m_pMenu;
Poznámky
NULL, pokud položka není nabídka.
CCmdUI::m_pSubMenu
Ukazatel (typu CMenu
) na obsaženou dílčí nabídku reprezentovanou objektem CCmdUI
.
CMenu* m_pSubMenu;
Poznámky
NULL, pokud položka není nabídka. Pokud je dílčí nabídka automaticky otevíraná, m_nID obsahuje ID první položky v místní nabídce. Další informace naleznete v technické poznámce 21.
CCmdUI::m_pOther
Ukazatel (typu CWnd
) na objekt okna, například nástroj nebo stavový řádek, který oznámení odeslal.
CWnd* m_pOther;
Poznámky
NULL, pokud je položka nabídka nebo objekt, který není CWnd
objekt.
CCmdUI::SetCheck
Voláním této členské funkce nastavíte položku uživatelského rozhraní pro tento příkaz na odpovídající stav kontroly.
virtual void SetCheck(int nCheck = 1);
Parametry
nCheck
Určuje stav kontroly, který se má nastavit. Pokud 0, zruší zaškrtnutí; pokud 1, kontroly; a pokud 2, nastaví neurčité.
Poznámky
Tato členová funkce funguje pro položky nabídky a tlačítka panelu nástrojů. Neurčitý stav se vztahuje pouze na tlačítka panelu nástrojů.
CCmdUI::SetRadio
Voláním této členské funkce nastavíte položku uživatelského rozhraní pro tento příkaz na odpovídající stav kontroly.
virtual void SetRadio(BOOL bOn = TRUE);
Parametry
Bon
TRUE pro povolení položky; jinak NEPRAVDA.
Poznámky
Tato členová funkce funguje podobně jako SetCheck
, s tím rozdílem, že pracuje s položkami uživatelského rozhraní, které fungují jako součást skupiny rádia. Zrušení zaškrtnutí ostatních položek ve skupině není automatické, pokud samotné položky nezachovají chování skupiny.
CCmdUI::SetText
Voláním této členské funkce nastavíte text položky uživatelského rozhraní pro tento příkaz.
virtual void SetText(LPCTSTR lpszText);
Parametry
lpszText
Ukazatel na textový řetězec.
Příklad
void CMyRichEditView::OnUpdateLineNumber(CCmdUI *pCmdUI)
{
int nLine = GetRichEditCtrl().LineFromChar(-1) + 1;
CString string;
string.Format(_T("Line %d"), nLine);
pCmdUI->Enable(TRUE);
pCmdUI->SetText(string);
}