CContextMenuManager – třída
Objekt CContextMenuManager
spravuje místní nabídky, označované také jako místní nabídky.
Syntaxe
class CContextMenuManager : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CContextMenuManager::CContextMenuManager | CContextMenuManager Vytvoří objekt. |
CContextMenuManager::~CContextMenuManager |
Destruktor. |
Veřejné metody
Název | Popis |
---|---|
CContextMenuManager::AddMenu | Přidá novou místní nabídku. |
CContextMenuManager::GetMenuById | Vrátí popisovač nabídky přidružené k zadanému ID prostředku. |
CContextMenuManager::GetMenuByName | Vrátí popisovač nabídky, která odpovídá zadanému názvu nabídky. |
CContextMenuManager::GetMenuNames | Vrátí seznam názvů nabídek. |
CContextMenuManager::LoadState | Načte místní nabídky uložené v registru Systému Windows. |
CContextMenuManager::ResetState | Vymaže místní nabídky ze správce místní nabídky. |
CContextMenuManager::SaveState | Uloží místní nabídky do registru Systému Windows. |
CContextMenuManager::SetDontCloseActiveMenu | Určuje, jestli CContextMenuManager se aktivní místní nabídka zavře, když se zobrazí nová místní nabídka. |
CContextMenuManager::ShowPopupMenu | Zobrazí zadanou místní nabídku. |
CContextMenuManager::TrackPopupMenu | Zobrazí zadanou místní nabídku. Vrátí index vybraného příkazu nabídky. |
Poznámky
CContextMenuManager
spravuje místní nabídky a zajišťuje, aby měly konzistentní vzhled.
Objekt byste neměli vytvářet CContextMenuManager
ručně. Architektura vaší aplikace vytvoří CContextMenuManager
objekt. Při inicializaci aplikace byste však měli volat CWinAppEx::InitContextMenuManager . Po inicializaci správce kontextu použijte metodu CWinAppEx::GetContextMenuManager k získání ukazatele na správce kontextu pro vaši aplikaci.
Místní nabídky můžete vytvořit za běhu voláním AddMenu
. Pokud chcete zobrazit nabídku bez prvního přijetí uživatelského vstupu, zavolejte ShowPopupMenu
. TrackPopupMenu
se používá, když chcete vytvořit nabídku a čekat na vstup uživatele. TrackPopupMenu
vrátí index vybraného příkazu nebo 0, pokud uživatel ukončil bez výběru čehokoli.
Může CContextMenuManager
také uložit a načíst svůj stav do registru Systému Windows.
Příklad
Následující příklad ukazuje, jak přidat nabídku k objektu CContextMenuManager
a jak nezavírat aktivní místní nabídku, když CContextMenuManager
objekt zobrazí novou místní nabídku. Tento fragment kódu je součástí ukázky vlastních stránek.
// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);
Hierarchie dědičnosti
CContextMenuManager
Požadavky
Záhlaví: afxcontextmenumanager.h
CContextMenuManager::AddMenu
Přidá novou místní nabídku do CContextMenuManager.
BOOL AddMenu(
UINT uiMenuNameResId,
UINT uiMenuResId);
BOOL AddMenu(
LPCTSTR lpszName,
UINT uiMenuResId);
Parametry
uiMenuNameResId
[v] ID prostředku pro řetězec, který obsahuje název nové nabídky.
uiMenuResId
[v] ID prostředku nabídky.
lpszName
[v] Řetězec, který obsahuje název nové nabídky.
Návratová hodnota
Nenulové, pokud byla metoda úspěšná; 0, pokud metoda selže.
Poznámky
Tato metoda selže, pokud je uiMenuResId neplatný nebo pokud jiná nabídka se stejným názvem již je v CContextMenuManager
souboru .
CContextMenuManager::CContextMenuManager
Vytvoří CContextMenuManager objektu.
CContextMenuManager();
Poznámky
Ve většině případů byste neměli vytvářet CContextMenuManager
ručně. Architektura vaší aplikace vytvoří CContextMenuManager
objekt. Během inicializace aplikace byste měli volat CWinAppEx::InitContextMenuManager . Pokud chcete získat ukazatel na správce kontextu, zavolejte CWinAppEx::GetContextMenuManager.
CContextMenuManager::GetMenuById
Vrátí popisovač nabídky přidružené k danému ID prostředku.
HMENU GetMenuById(UINT nMenuResId) const;
Parametry
nMenuResId
[v] ID prostředku pro nabídku.
Návratová hodnota
Popisovač přidružené nabídky nebo NULL
pokud se nabídka nenašla.
CContextMenuManager::GetMenuByName
Vrátí popisovač do konkrétní nabídky.
HMENU GetMenuByName(
LPCTSTR lpszName,
UINT* puiOrigResID = NULL) const;
Parametry
lpszName
[v] Řetězec obsahující název nabídky, který se má načíst.
puiOrigResID
[ven] Ukazatel na UINT. Tento parametr obsahuje ID prostředku zadané nabídky, pokud byl nalezen.
Návratová hodnota
Popisovač nabídky, který odpovídá názvu zadanému nástrojem lpszName. NULL pokud neexistuje žádná nabídka s názvem lpszName.
Poznámky
Pokud tato metoda najde nabídku, která odpovídá lpszName, GetMenuByName
uloží ID prostředku nabídky v parametru puiOrigResID.
CContextMenuManager::GetMenuNames
Vrátí seznam názvů nabídek přidaných do CContextMenuManager.
void GetMenuNames(CStringList& listOfNames) const;
Parametry
listOfNames
[ven] Odkaz na parametr CStringList . Tato metoda zapíše do tohoto parametru seznam názvů nabídek.
CContextMenuManager::LoadState
Načte informace asociované s CContextMenuManager Třída z registru Windows.
virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);
Parametry
lpszProfileName
[v] Řetězec, který obsahuje relativní cestu klíče registru.
Návratová hodnota
Nenulové, pokud je metoda úspěšná; jinak 0.
Poznámky
Parametr lpszProfileName není absolutní cestou pro položku registru. Jedná se o relativní cestu, která se přidá na konec výchozího klíče registru pro vaši aplikaci. K získání nebo nastavení výchozího klíče registru použijte metody CWinAppEx::GetRegistryBase a CWinAppEx::SetRegistryBase .
Pomocí metody CContextMenuManager::SaveState uložte místní nabídky do registru.
CContextMenuManager::ResetState
Vymaže všechny položky z místních nabídek přidružených ke třídě CContextMenuManager.
virtual BOOL ResetState();
Návratová hodnota
TRUE, pokud je metoda úspěšná; NEPRAVDA, pokud dojde k selhání.
Poznámky
Tato metoda vymaže místní nabídky a odebere je z okna CContextMenuManager
.
CContextMenuManager::SaveState
Uloží informace asociované s CContextMenuManager Třída do registru Windows.
virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);
Parametry
lpszProfileName
[v] Řetězec, který obsahuje relativní cestu klíče registru.
Návratová hodnota
Nenulové, pokud je metoda úspěšná; jinak 0.
Poznámky
Parametr lpszProfileName není absolutní cestou pro položku registru. Jedná se o relativní cestu, která se přidá na konec výchozího klíče registru pro vaši aplikaci. K získání nebo nastavení výchozího klíče registru použijte metody CWinAppEx::GetRegistryBase a CWinAppEx::SetRegistryBase .
K načtení místních nabídek z registru použijte metodu CContextMenuManager::LoadState .
CContextMenuManager::SetDontCloseActiveMenu
Určuje, zda CContextMenuManager zavře aktivní místní nabídku, když zobrazí novou místní nabídku.
void SetDontCloseActiveMenu (BOOL bSet = TRUE);
Parametry
bSet
[v] Logický parametr, který určuje, jestli chcete zavřít aktivní místní nabídku. Hodnota TRUE označuje, že aktivní místní nabídka není uzavřena. FALSE označuje, že aktivní místní nabídka je zavřená.
Poznámky
Ve výchozím nastavení CContextMenuManager
zavře aktivní místní nabídku.
CContextMenuManager::ShowPopupMenu
Zobrazí zadanou místní nabídku.
virtual BOOL ShowPopupMenu(
UINT uiMenuResId,
int x,
int y,
CWnd* pWndOwner,
BOOL bOwnMessage = FALSE,
BOOL bRightAlign = FALSE);
virtual CMFCPopupMenu* ShowPopupMenu(
HMENU hmenuPopup,
int x,
int y,
CWnd* pWndOwner,
BOOL bOwnMessage = FALSE,
BOOL bAutoDestroy = TRUE,
BOOL bRightAlign = FALSE);
Parametry
uiMenuResId
[v] ID prostředku nabídky, kterou tato metoda zobrazí.
x
[v] Vodorovný posun místní nabídky v souřadnicích klienta.
y
[v] Svislý posun místní nabídky v souřadnicích klienta
pWndOwner
[v] Ukazatel na nadřazené okno místní nabídky.
bOwnMessage
[v] Logický parametr, který označuje způsob směrování zpráv. Pokud je bOwnMessage FALSE, použije se standardní směrování MFC. V opačném případě obdrží pWndOwner zprávy.
hmenuPopup
[v] Popisovač nabídky, kterou tato metoda zobrazí.
bAutoDestroy
[v] Logický parametr, který označuje, zda bude nabídka automaticky zničena.
bRightAlign
[v] Logický parametr, který označuje, jak jsou položky nabídky zarovnány. Pokud je bRightAlign pravda, je nabídka zarovnaná doprava pro pořadí čtení zprava doleva.
Návratová hodnota
První přetížení metody vrátí nenulové, pokud metoda ukazuje nabídku úspěšně; jinak 0. Druhé přetížení metody vrátí ukazatel na CMFCPopupMenu , pokud místní nabídka zobrazí správně; jinak NULL.
Poznámky
Tato metoda se podobá metodě CContextMenuManager::TrackPopupMenu v tom, že obě metody zobrazují místní nabídku. TrackPopupMenu
Vrátí však index vybraného příkazu nabídky.
Pokud je parametr bAutoDestroy FALSE, musíte ručně volat zděděnou DestroyMenu
metodu pro uvolnění paměťových prostředků. Výchozí implementace ShowPopupMenu
nepoužívá parametr bAutoDestroy. Je poskytován pro budoucí použití nebo pro vlastní třídy odvozené z CContextMenuManager
třídy .
CContextMenuManager::TrackPopupMenu
Zobrazí zadanou místní nabídku a vrátí index vybraného příkazu místní nabídky.
virtual UINT TrackPopupMenu(
HMENU hmenuPopup,
int x,
int y,
CWnd* pWndOwner,
BOOL bRightAlign = FALSE);
Parametry
hmenuPopup
[v] Popisovač místní nabídky, kterou tato metoda zobrazí.
x
[v] Vodorovný posun místní nabídky v souřadnicích klienta.
y
[v] Svislý posun místní nabídky v souřadnicích klienta.
pWndOwner
[v] Ukazatel na nadřazené okno místní nabídky.
bRightAlign
[v] Logický parametr, který označuje, jak jsou položky nabídky zarovnány. Pokud je bRightAlign pravda, je nabídka zarovnaná doprava pro pořadí čtení zprava doleva. Pokud je bRightAlign FALSE, je nabídka zarovnaná doleva pro pořadí čtení zleva doprava.
Návratová hodnota
ID příkazu nabídky, který uživatel zvolí; 0, pokud uživatel místní nabídku zavře bez výběru příkazu nabídky.
Poznámky
Tato metoda funguje jako modální volání pro zobrazení místní nabídky. Aplikace nebude pokračovat na následující řádek v kódu, dokud uživatel buď nezavře místní nabídku, nebo nevybere příkaz. Alternativní metodou, kterou můžete použít k zobrazení místní nabídky, je CContextMenuManager::ShowPopupMenu. Tato metoda není modální volání a nevrátí ID vybraného příkazu.