Udostępnij za pośrednictwem


Klasa CContextMenuManager

Obiekt CContextMenuManager zarządza menu skrótów, znanymi również jako menu kontekstowe.

Składnia

class CContextMenuManager : public CObject

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CContextMenuManager::CContextMenuManager CContextMenuManager Tworzy obiekt.
CContextMenuManager::~CContextMenuManager Destruktor.

Metody publiczne

Nazwa/nazwisko opis
CContextMenuManager::AddMenu Dodaje nowe menu skrótów.
CContextMenuManager::GetMenuById Zwraca uchwyt do menu skojarzonego z podanym identyfikatorem zasobu.
CContextMenuManager::GetMenuByName Zwraca uchwyt do menu pasujący do podanej nazwy menu.
CContextMenuManager::GetMenuNames Zwraca listę nazw menu.
CContextMenuManager::LoadState Ładuje menu skrótów przechowywane w rejestrze systemu Windows.
CContextMenuManager::ResetState Czyści menu skrótów z menedżera menu kontekstowego.
CContextMenuManager::SaveState Zapisuje menu skrótów w rejestrze systemu Windows.
CContextMenuManager::SetDontCloseActiveMenu Określa, czy CContextMenuManager polecenie zamyka aktywne menu skrótów po wyświetleniu nowego menu skrótów.
CContextMenuManager::ShowPopupMenu Wyświetla określone menu skrótów.
CContextMenuManager::TrackPopupMenu Wyświetla określone menu skrótów. Zwraca indeks wybranego polecenia menu.

Uwagi

CContextMenuManager zarządza menu skrótów i zapewnia spójny wygląd.

Nie należy ręcznie tworzyć CContextMenuManager obiektu. Struktura aplikacji tworzy CContextMenuManager obiekt. Jednak podczas inicjowania aplikacji należy wywołać metodę CWinAppEx::InitContextMenuManager . Po zainicjowaniu menedżera kontekstu użyj metody CWinAppEx::GetContextMenuManager , aby uzyskać wskaźnik do menedżera kontekstu dla aplikacji.

Menu skrótów można tworzyć w czasie wykonywania, wywołując polecenie AddMenu. Jeśli chcesz wyświetlić menu bez uprzedniego otrzymania danych wejściowych użytkownika, wywołaj metodę ShowPopupMenu. TrackPopupMenu jest używany, gdy chcesz utworzyć menu i poczekać na dane wejściowe użytkownika. TrackPopupMenu Zwraca indeks wybranego polecenia lub 0, jeśli użytkownik zakończył działanie bez wybierania niczego.

Program CContextMenuManager może również zapisywać i ładować jego stan do rejestru systemu Windows.

Przykład

W poniższym przykładzie pokazano, jak dodać menu do CContextMenuManager obiektu i jak nie zamknąć aktywnego menu podręcznego, gdy CContextMenuManager obiekt wyświetli nowe menu podręczne. Ten fragment kodu jest częścią przykładu Custom Pages.

// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);

Hierarchia dziedziczenia

Obiekt CObject

CContextMenuManager

Wymagania

Nagłówek: afxcontextmenumanager.h

CContextMenuManager::AddMenu

Dodaje nowe menu skrótów do CContextMenuManager.

BOOL AddMenu(
    UINT uiMenuNameResId,
    UINT uiMenuResId);

BOOL AddMenu(
    LPCTSTR lpszName,
    UINT uiMenuResId);

Parametry

uiMenuNameResId
[in] Identyfikator zasobu dla ciągu zawierającego nazwę nowego menu.

uiMenuResId
[in] Identyfikator zasobu menu.

lpszName
[in] Ciąg zawierający nazwę nowego menu.

Wartość zwracana

Nonzero, jeśli metoda zakończyła się pomyślnie; 0, jeśli metoda nie powiedzie się.

Uwagi

Ta metoda kończy się niepowodzeniem, jeśli identyfikator uiMenuResId jest nieprawidłowy lub inne menu o tej samej nazwie znajduje się już w .CContextMenuManager

CContextMenuManager::CContextMenuManager

Tworzy obiekt CContextMenuManager.

CContextMenuManager();

Uwagi

W większości przypadków nie należy tworzyć CContextMenuManager ręcznie. Struktura aplikacji tworzy CContextMenuManager obiekt. Podczas inicjowania aplikacji należy wywołać metodę CWinAppEx::InitContextMenuManager . Aby uzyskać wskaźnik do menedżera kontekstu, wywołaj polecenie CWinAppEx::GetContextMenuManager.

CContextMenuManager::GetMenuById

Zwraca uchwyt do menu skojarzonego z danym identyfikatorem zasobu.

HMENU GetMenuById(UINT nMenuResId) const;

Parametry

nMenuResId
[in] Identyfikator zasobu dla menu.

Wartość zwracana

Dojście do skojarzonego menu lub NULL jeśli menu nie zostanie znalezione.

CContextMenuManager::GetMenuByName

Zwraca uchwyt do określonego menu.

HMENU GetMenuByName(
    LPCTSTR lpszName,
    UINT* puiOrigResID = NULL) const;

Parametry

lpszName
[in] Ciąg zawierający nazwę menu do pobrania.

puiOrigResID
[out] Wskaźnik do UINT. Ten parametr zawiera identyfikator zasobu określonego menu, jeśli zostanie znaleziony.

Wartość zwracana

Dojście do menu zgodnego z nazwą lpszName. Wartość NULL, jeśli nie ma menu o nazwie lpszName.

Uwagi

Jeśli ta metoda znajdzie menu zgodne z lpszName, GetMenuByName przechowuje identyfikator zasobu menu w parametrze puiOrigResID.

CContextMenuManager::GetMenuNames

Zwraca listę nazw menu dodanych do CContextMenuManager.

void GetMenuNames(CStringList& listOfNames) const;

Parametry

listOfNames
[out] Odwołanie do parametru CStringList . Ta metoda zapisuje listę nazw menu do tego parametru.

CContextMenuManager::LoadState

Ładuje informacje skojarzone z klasą CContextMenuManager z rejestru systemu Windows.

virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);

Parametry

lpszProfileName
[in] Ciąg zawierający ścieżkę względną klucza rejestru.

Wartość zwracana

Nonzero, jeśli metoda zakończyła się pomyślnie; w przeciwnym razie 0.

Uwagi

Parametr lpszProfileName nie jest ścieżką bezwzględną wpisu rejestru. Jest to ścieżka względna dodawana na końcu domyślnego klucza rejestru dla aplikacji. Aby uzyskać lub ustawić domyślny klucz rejestru, użyj odpowiednio metod CWinAppEx::GetRegistryBase i CWinAppEx::SetRegistryBase .

Użyj metody CContextMenuManager::SaveState , aby zapisać menu skrótów w rejestrze.

CContextMenuManager::ResetState

Czyści wszystkie elementy z menu skrótów skojarzonych z klasą CContextMenuManager.

virtual BOOL ResetState();

Wartość zwracana

Wartość TRUE, jeśli metoda zakończyła się pomyślnie; FAŁSZ, jeśli wystąpi błąd.

Uwagi

Ta metoda czyści wyskakujące menu i usuwa je z pliku CContextMenuManager.

CContextMenuManager::SaveState

Zapisuje informacje skojarzone z klasą CContextMenuManager w rejestrze systemu Windows.

virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);

Parametry

lpszProfileName
[in] Ciąg zawierający ścieżkę względną klucza rejestru.

Wartość zwracana

Nonzero, jeśli metoda zakończyła się pomyślnie; w przeciwnym razie 0.

Uwagi

Parametr lpszProfileName nie jest ścieżką bezwzględną wpisu rejestru. Jest to ścieżka względna dodawana na końcu domyślnego klucza rejestru dla aplikacji. Aby uzyskać lub ustawić domyślny klucz rejestru, użyj odpowiednio metod CWinAppEx::GetRegistryBase i CWinAppEx::SetRegistryBase .

Użyj metody CContextMenuManager::LoadState , aby załadować menu skrótów z rejestru.

CContextMenuManager::SetDontCloseActiveMenu

Określa, czy CContextMenuManager zamyka aktywne menu podręczne po wyświetleniu nowego menu podręcznego.

void SetDontCloseActiveMenu (BOOL bSet = TRUE);

Parametry

Zestaw bSet
[in] Parametr logiczny, który kontroluje, czy zamknąć aktywne menu podręczne. Wartość TRUE wskazuje, że aktywne menu podręczne nie jest zamknięte. FAŁSZ wskazuje, że aktywne menu podręczne jest zamknięte.

Uwagi

Domyślnie polecenie CContextMenuManager zamyka aktywne menu podręczne.

CContextMenuManager::ShowPopupMenu

Wyświetla określone menu skrótów.

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
[in] Identyfikator zasobu menu, który zostanie wyświetlony w tej metodzie.

x
[in] Przesunięcie poziome menu skrótów we współrzędnych klienta.

y
[in] Przesunięcie pionowe menu skrótów we współrzędnych klienta

pWndOwner
[in] Wskaźnik do okna nadrzędnego menu skrótów.

bOwnMessage
[in] Parametr logiczny wskazujący sposób kierowania komunikatów. Jeśli bOwnMessage ma wartość FALSE, używany jest standardowy routing MFC. W przeciwnym razie pWndOwner odbiera komunikaty.

hmenuPopup
[in] Uchwyt menu, który zostanie wyświetlony w tej metodzie.

bAutoDestroy
[in] Parametr logiczny wskazujący, czy menu zostanie automatycznie zniszczone.

bRightAlign
[in] Parametr logiczny wskazujący sposób wyrównania elementów menu. Jeśli parametr bRightAlign ma wartość TRUE, menu jest wyrównane do prawej do kolejności odczytu od prawej do lewej.

Wartość zwracana

Pierwsze przeciążenie metody zwraca wartość nonzero, jeśli metoda wyświetli menu pomyślnie; w przeciwnym razie 0. Drugie przeciążenie metody zwraca wskaźnik do CMFCPopupMenu , jeśli menu skrótów jest wyświetlane poprawnie; w przeciwnym razie wartość NULL.

Uwagi

Ta metoda przypomina metodę CContextMenuManager::TrackPopupMenu w tym, że obie metody wyświetlają menu skrótów. TrackPopupMenu Zwraca jednak indeks wybranego polecenia menu.

Jeśli parametr bAutoDestroy ma wartość FALSE, należy ręcznie wywołać metodę dziedziczonej DestroyMenu w celu zwolnienia zasobów pamięci. Domyślna implementacja polecenia nie używa parametru ShowPopupMenu bAutoDestroy. Jest on udostępniany do użycia w przyszłości lub dla klas niestandardowych pochodzących z CContextMenuManager klasy .

CContextMenuManager::TrackPopupMenu

Wyświetla określone menu skrótów i zwraca indeks wybranego polecenia menu skrótów.

virtual UINT TrackPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bRightAlign = FALSE);

Parametry

hmenuPopup
[in] Uchwyt menu skrótów wyświetlany przez tę metodę.

x
[in] Przesunięcie poziome menu skrótów we współrzędnych klienta.

y
[in] Przesunięcie pionowe menu skrótów we współrzędnych klienta.

pWndOwner
[in] Wskaźnik do okna nadrzędnego menu skrótów.

bRightAlign
[in] Parametr logiczny wskazujący sposób wyrównania elementów menu. Jeśli parametr bRightAlign ma wartość TRUE, menu jest wyrównane do prawej do kolejności odczytu od prawej do lewej. Jeśli parametr bRightAlign ma wartość FALSE, menu jest wyrównane do lewej dla kolejności odczytu od lewej do prawej.

Wartość zwracana

Identyfikator polecenia menu polecenia wybranego przez użytkownika; 0, jeśli użytkownik zamknie menu skrótów bez wybrania polecenia menu.

Uwagi

Ta metoda działa jako modalne wywołanie w celu wyświetlenia menu skrótów. Aplikacja nie będzie kontynuować wykonywania następującego wiersza w kodzie, dopóki użytkownik nie zamknie menu skrótów lub wybierze polecenie. Alternatywną metodą, której można użyć do wyświetlania menu skrótów, jest CContextMenuManager::ShowPopupMenu. Ta metoda nie jest wywołaniem modalnym i nie zwróci identyfikatora wybranego polecenia.

Zobacz też

Wykres hierarchii
Klasy
Klasa CWinAppEx