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
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.