Sdílet prostřednictvím


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

Jméno popis
CContextMenuManager::CContextMenuManager CContextMenuManager Vytvoří objekt.
CContextMenuManager::~CContextMenuManager Destruktor.

Veřejné metody

Jméno 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

Objekt CObject

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.

Vrácená 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 CContextMenuManagersouboru .

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.

Vrácená 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.

Vrácená 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.

Vrácená 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();

Vrácená 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.

Vrácená 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.

Vrácená 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.

Vrácená 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.

Viz také

Graf hierarchie
Třídy
CWinAppEx – třída