Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
A Windows HMENUbeágyazása.
Szemantika
class CMenu : public CObject
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
CMenu::CMenu |
Egy CMenu objektumot hoz létre. |
Nyilvános metódusok
| Név | Description |
|---|---|
CMenu::AppendMenu |
Új elemet fűz a menü végéhez. |
CMenu::Attach |
Windows menüfogópontot csatol egy CMenu objektumhoz. |
CMenu::CheckMenuItem |
Pipát helyez el az előugró menü egyik menüeleme mellett, vagy eltávolítja a pipát. |
CMenu::CheckMenuRadioItem |
Egy menüelem melletti választógombot helyez el, és eltávolítja a választógombot a csoport összes többi menüpontjából. |
CMenu::CreateMenu |
Létrehoz egy üres menüt, és csatolja egy CMenu objektumhoz. |
CMenu::CreatePopupMenu |
Létrehoz egy üres előugró menüt, és csatolja egy CMenu objektumhoz. |
CMenu::DeleteMenu |
Egy megadott elem törlése a menüből. Ha a menüelem előugró menüvel rendelkezik, a kezelőpontot az előugró menüben megsemmisíti, és felszabadítja az általa használt memóriát. |
CMenu::DeleteTempMap |
Törli a tagfüggvény által FromHandle létrehozott ideiglenes CMenu objektumokat. |
CMenu::DestroyMenu |
Megsemmisíti az objektumhoz csatolt menüt CMenu , és felszabadítja a menü által elfoglalt memóriát. |
CMenu::Detach |
Leválaszt egy Windows menüfogópontot egy CMenu objektumról, és visszaadja a fogópontot. |
CMenu::DrawItem |
A keretrendszer meghívja, amikor egy tulajdonos által rajzolt menü vizuális aspektusa megváltozik. |
CMenu::EnableMenuItem |
Engedélyezi, letiltja vagy halványítja (szürkén) egy menüelemet. |
CMenu::FromHandle |
Egy windowsos menüfogópontot kapott objektumra mutató mutatót CMenu ad vissza. |
CMenu::GetDefaultItem |
Meghatározza a megadott menü alapértelmezett menüelemét. |
CMenu::GetMenuContextHelpId |
Lekéri a menühöz társított súgókörnyezet azonosítóját. |
CMenu::GetMenuInfo |
Egy adott menü adatainak lekérése. |
CMenu::GetMenuItemCount |
Meghatározza az előugró vagy felső szintű menü elemeinek számát. |
CMenu::GetMenuItemID |
A megadott helyen található menüelem menüelem-azonosítójának lekérése. |
CMenu::GetMenuItemInfo |
Beolvassa a menüelem adatait. |
CMenu::GetMenuState |
A megadott menüelem állapotát vagy az előugró menü elemeinek számát adja vissza. |
CMenu::GetMenuString |
Lekéri a megadott menüelem címkéjét. |
CMenu::GetSafeHmenu |
m_hMenu Az objektum által CMenu becsomagolt értéket adja vissza. |
CMenu::GetSubMenu |
Mutatót kér le egy előugró menübe. |
CMenu::InsertMenu |
Beszúr egy új menüelemet a megadott pozícióba, és más elemeket helyez le a menübe. |
CMenu::InsertMenuItem |
Új menüelemet szúr be a megadott pozícióba egy menüben. |
CMenu::LoadMenu |
Betölt egy menüerőforrást a végrehajtható fájlból, és csatolja egy CMenu objektumhoz. |
CMenu::LoadMenuIndirect |
Betölt egy menüt egy menüsablonból a memóriában, és csatolja egy CMenu objektumhoz. |
CMenu::MeasureItem |
A keretrendszer meghívta a menüdimenziók meghatározására a tulajdonos által rajzolt menü létrehozásakor. |
CMenu::ModifyMenu |
Egy meglévő menüelem módosítása a megadott helyen. |
CMenu::RemoveMenu |
Egy kapcsolódó előugró menüt tartalmazó menüelem törlése a megadott menüből. |
CMenu::SetDefaultItem |
Beállítja a megadott menü alapértelmezett menüelemét. |
CMenu::SetMenuContextHelpId |
Beállítja a súgókörnyezet azonosítóját a menühöz társítva. |
CMenu::SetMenuInfo |
Egy adott menü információinak megadása. |
CMenu::SetMenuItemBitmaps |
A megadott pipa-bitképeket egy menüelemhez társítja. |
CMenu::SetMenuItemInfo |
A menüelem adatainak módosítása. |
CMenu::TrackPopupMenu |
Megjelenít egy lebegő előugró menüt a megadott helyen, és nyomon követi az előugró menü elemeinek kiválasztását. |
CMenu::TrackPopupMenuEx |
Megjelenít egy lebegő előugró menüt a megadott helyen, és nyomon követi az előugró menü elemeinek kiválasztását. |
Nyilvános operátorok
| Név | Description |
|---|---|
CMenu::operator HMENU |
Lekéri a menüobjektum leíróját. |
CMenu::operator != |
Meghatározza, hogy két menüobjektum nem egyenlő-e. |
CMenu::operator == |
Meghatározza, hogy két menüobjektum egyenlő-e. |
Nyilvános adatok tagjai
| Név | Description |
|---|---|
CMenu::m_hMenu |
Megadja az objektumhoz csatolt Windows menü leíróját CMenu . |
Megjegyzések
Tagfüggvényeket biztosít egy menü létrehozásához, nyomon követéséhez, frissítéséhez és megsemmisítéséhez.
Hozzon létre egy CMenu objektumot a veremkereten helyiként, majd hívja meg CMenua tagfüggvényeket az új menü szükség szerinti módosításához. Ezután hívja CWnd::SetMenu meg a menüt egy ablakra, majd azonnal hívja meg az CMenu objektum tagfüggvényét Detach . A CWnd::SetMenu tagfüggvény az ablak menüjét az új menüre állítja, az ablakot újrarajzoltuk, hogy tükrözze a menüváltást, és a menü tulajdonjogát is átadja az ablaknak. A hívás Detach leválasztja az HMENU objektumot CMenu , így amikor a helyi CMenu változó kikerül a hatókörből, az CMenu objektummegsemmisítő nem kísérli meg megsemmisíteni a már nem birtokolt menüt. Maga a menü automatikusan elpusztul, amikor az ablak elpusztul.
A tagfüggvény használatával LoadMenuIndirect létrehozhat egy menüt egy sablonból a memóriában, de az erőforrásból egy hívással LoadMenu létrehozott menü könnyebben karbantartható, és magát a menüerőforrást is létrehozhatja és módosíthatja a menüszerkesztő.
Öröklési hierarchia
CMenu
Requirements
Fejléc:afxwin.h
CMenu::AppendMenu
Új elem hozzáfűzése a menü végéhez.
BOOL AppendMenu(
UINT nFlags,
UINT_PTR nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL AppendMenu(
UINT nFlags,
UINT_PTR nIDNewItem,
const CBitmap* pBmp);
Paraméterek
nFlags
Az új menüelem állapotával kapcsolatos információkat adja meg a menühöz való hozzáadáskor. A megjegyzések szakaszban felsorolt értékek közül egy vagy többből áll.
nIDNewItem
Megadja az új menüelem parancsazonosítóját, vagy ha nFlags be van állítva MF_POPUP, az előugró menü menüfogópontját (HMENU). A nIDNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges), ha nFlags be van állítva MF_SEPARATOR.
lpszNewItem
Az új menüelem tartalmát adja meg. A nFlags paramétert a következő módon értelmezzük lpszNewItem :
nFlags |
A lpszNewItem |
|---|---|
MF_OWNERDRAW |
Egy alkalmazás által megadott 32 bites értéket tartalmaz, amelyet az alkalmazás a menüelemhez társított további adatok fenntartására használhat. Ez a 32 bites érték akkor érhető el az alkalmazás számára, amikor feldolgozza WM_MEASUREITEM és WM_DRAWITEM üzeneteket küld. Az érték az itemData adott üzenetekhez megadott struktúra tagjában van tárolva. |
MF_STRING |
Null értékű sztringre mutató mutatót tartalmaz. Ez az alapértelmezett értelmezés. |
MF_SEPARATOR |
A lpszNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges). |
pBmp
CBitmap A menüelemként használt objektumra mutat.
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Az alkalmazás a menüelem állapotát a következő értékekkel nFlagsadhatja meg: Amikor nIDNewItem előugró menüt ad meg, az annak a menünek a része lesz, amelyhez hozzá van fűzve. Ha a menü elpusztul, a hozzáfűzött menü is el lesz pusztítva. A hozzáfűzött menüt le kell választani egy CMenu objektumról az ütközés elkerülése érdekében. Vegye figyelembe, hogy MF_STRINGMF_OWNERDRAW a bittérképes AppendMenuverzió nem érvényes.
Az alábbi lista azokat a jelölőket ismerteti, amelyek a következőkben állíthatók be nFlags:
MF_CHECKEDVáltógombkéntMF_UNCHECKEDműködik az elem melletti alapértelmezett pipa elhelyezéséhez. Amikor az alkalmazás pipa bitképeket biztosít (lásd aSetMenuItemBitmapstagfüggvényt), megjelenik a "pipa" bitkép.MF_UNCHECKEDVáltógombkéntMF_CHECKEDműködik az elem melletti pipa eltávolításához. Amikor az alkalmazás pipa bitképeket biztosít (lásd aSetMenuItemBitmapstagfüggvényt), megjelenik a "pipa kikapcsolva" bitkép.MF_DISABLEDLetiltja a menüelemet, hogy ne lehessen kijelölni, de ne halványíthassa el.MF_ENABLEDEngedélyezi a menüelemet, hogy kijelölhető legyen, és visszaállítsa a halvány állapotából.MF_GRAYEDLetiltja a menüelemet, hogy ne lehessen kijelölni és halványítani.MF_MENUBARBREAKAz elemet egy új sorban helyezi el statikus menükben vagy egy új oszlopban az előugró menükben. Az új előugró menüoszlopot függőleges osztásvonal választja el a régi oszloptól.MF_MENUBREAKAz elemet egy új sorban helyezi el statikus menükben vagy egy új oszlopban az előugró menükben. Az oszlopok között nincs elválasztó vonal.MF_OWNERDRAWAzt adja meg, hogy az elem egy tulajdonosi rajzelem. Amikor a menü első alkalommal jelenik meg, a menüt tartalmazó ablak kap egyWM_MEASUREITEMüzenetet, amely lekéri a menüelem magasságát és szélességét. AzWM_DRAWITEMüzenet akkor lesz elküldve, ha a tulajdonosnak frissítenie kell a menüelem vizuális megjelenését. Ez a beállítás nem érvényes a felső szintű menüelemre.MF_POPUPMegadja, hogy a menüelemhez tartozik-e előugró menü. Az azonosító paraméter egy leírót ad meg az elemhez társítandó előugró menühöz. Ez arra szolgál, hogy felső szintű előugró menüt vagy hierarchikus előugró menüt adjon hozzá egy előugró menüelemhez.MF_SEPARATORVízszintes osztóvonalat rajzol. Csak előugró menüben használható. Ez a sor nem halványítható, nem tiltható le és nem emelhető ki. A rendszer figyelmen kívül hagyja az egyéb paramétereket.MF_STRINGMegadja, hogy a menüelem egy karaktersztring.
Az alábbi csoportok felsorolják azokat a jelzőket, amelyek kölcsönösen kizárják egymást, és nem használhatók együtt:
MF_DISABLED,MF_ENABLEDésMF_GRAYEDMF_STRING,MF_OWNERDRAW,MF_SEPARATORés a bitkép verziójaMF_MENUBARBREAKésMF_MENUBREAKMF_CHECKEDésMF_UNCHECKED
Ha egy ablakban található menüt módosítanak (függetlenül attól, hogy megjelenik-e az ablak), az alkalmazásnak hívnia CWnd::DrawMenuBarkell.
Example
Lásd a példát a CMenu::CreateMenu.
CMenu::Attach
Meglévő Windows-menü csatolása egy CMenu objektumhoz.
BOOL Attach(HMENU hMenu);
Paraméterek
hMenu
Egy Windows-menü fogópontját adja meg.
Visszaadott érték
Nonzero, ha a művelet sikeres volt; egyéb esetben 0.
Megjegyzések
Ezt a függvényt nem szabad meghívni, ha már van menü az CMenu objektumhoz csatolva. A menükezelőt az m_hMenu adattag tárolja.
Ha a módosítani kívánt menü már hozzá van rendelve egy ablakhoz, a CWnd::GetMenu függvény segítségével lekérheti a menü fogópontját.
Example
CMenu mnu;
HMENU hmnu = AfxGetMainWnd()->GetMenu()->GetSafeHmenu();
mnu.Attach(hmnu);
// Now you can manipulate the window's menu as a CMenu
// object...
mnu.Detach();
CMenu::CheckMenuItem
Bejelöli vagy eltávolítja a pipákat az előugró menü menüelemeiből.
UINT CheckMenuItem(
UINT nIDCheckItem,
UINT nCheck);
Paraméterek
nIDCheckItem
A ellenőrizni kívánt menüelemet adja meg, a megadott módon nCheck.
nCheck
Megadja, hogyan ellenőrizheti a menüelemet, és hogyan határozhatja meg az elem pozícióját a menüben. A nCheck paraméter lehet kombinálva MF_CHECKED vagy MF_UNCHECKED jelölőkkel MF_BYPOSITIONMF_BYCOMMAND . Ezek a jelzők a bitenkénti VAGY operátorral kombinálhatók. Jelentéseik a következők:
MF_BYCOMMANDMegadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett beállítás.MF_BYPOSITIONMegadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van.MF_CHECKEDVáltógombkéntMF_UNCHECKEDműködik az elem melletti alapértelmezett pipa elhelyezéséhez.MF_UNCHECKEDVáltógombkéntMF_CHECKEDműködik az elem melletti pipa eltávolításához.
Visszaadott érték
Az elem előző állapota: MF_CHECKED vagy MF_UNCHECKED0xFFFFFFFF ha a menüelem nem létezik.
Megjegyzések
A nIDCheckItem paraméter megadja a módosítani kívánt elemet.
A nIDCheckItem paraméter azonosíthat egy előugró menüelemet, valamint egy menüelemet. Az előugró menüelem ellenőrzéséhez nincs szükség speciális lépésekre. A felső szintű menüelemek nem ellenőrizhetők. Az előugró menüelemeket pozíció szerint kell ellenőrizni, mivel nincs hozzá hozzárendelve menüelem-azonosító.
Example
Lásd a példát a CMenu::GetMenuState.
CMenu::CheckMenuRadioItem
Ellenőrzi a megadott menüelemet, és rádióelemként jeleníti meg.
BOOL CheckMenuRadioItem(
UINT nIDFirst,
UINT nIDLast,
UINT nIDItem,
UINT nFlags);
Paraméterek
nIDFirst
Megadja (azonosítóként vagy eltolásként, az értéktől nFlagsfüggően) a választógombcsoport első menüelemét.
nIDLast
Megadja (azonosítóként vagy eltolásként, az értéktől nFlagsfüggően) a választógombcsoport utolsó menüelemét.
nIDItem
Megadja (azonosítóként vagy eltolásként, az értéktől függően) a csoport azon elemét nFlags, amelyet egy választógombbal kell ellenőrizni.
nFlags
Az , nIDLastés nIDItem a következő módon adja meg az értelmezéstnIDFirst:
| nFlags | Értelmezés |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
Visszaadott érték
Nonzero, ha sikeres; egyéb esetben 0
Megjegyzések
Ezzel egyidejűleg a függvény törli a társított csoport összes többi menüelemének jelölését, és törli az adott elemek választóelem-típusjelzőjét. A bejelölt elem egy választógomb (vagy listajel) bitkép használatával jelenik meg pipa bitkép helyett.
Example
Lásd a példát a ON_COMMAND_RANGE.
CMenu::CMenu
Létrehoz egy üres menüt, és csatolja egy CMenu objektumhoz.
CMenu();
Megjegyzések
A menü csak akkor jön létre, ha meghívja a következő létrehozási vagy betöltési tagfüggvények egyikét CMenu:
CMenu::CreateMenu
Létrehoz egy menüt, és csatolja az CMenu objektumhoz.
BOOL CreateMenu();
Visszaadott érték
Nonzero, ha a menü sikeresen létrejött; egyéb esetben 0.
Megjegyzések
A menü kezdetben üres. A menüelemek a tagfüggvény vagy InsertMenu a AppendMenu tagfüggvény használatával adhatók hozzá.
Ha a menü egy ablakhoz van rendelve, az automatikusan megsemmisül, amikor az ablak elpusztul.
A kilépés előtt az alkalmazásnak szabaddá kell tennie a menühöz társított rendszererőforrásokat, ha a menü nincs hozzárendelve egy ablakhoz. Az alkalmazás a tagfüggvény meghívásával felszabadít egy menüt DestroyMenu .
Example
// The code fragment below shows how to create a new menu for the
// application window using CreateMenu() and CreatePopupMenu().
// Then, the created menu will replace the current menu of the
// application. The old menu will be destroyed with DestroyMenu().
// NOTE: The code fragment below is done in a CFrameWnd-derived class.
// Create a new menu for the application window.
VERIFY(m_NewMenu.CreateMenu());
// Create a "File" popup menu and insert this popup menu to the
// new menu of the application window. The "File" menu has only
// one menu item, i.e. "Exit".
VERIFY(m_FileMenu.CreatePopupMenu());
m_FileMenu.AppendMenu(MF_STRING, ID_APP_EXIT, _T("E&xit"));
m_NewMenu.AppendMenu(MF_POPUP, (UINT_PTR)m_FileMenu.m_hMenu, _T("&File"));
// Remove and destroy old menu
SetMenu(NULL);
CMenu *old_menu = CMenu::FromHandle(m_hMenuDefault);
old_menu->DestroyMenu();
// Add new menu.
SetMenu(&m_NewMenu);
// Assign default menu
m_hMenuDefault = m_NewMenu.m_hMenu;
CMenu::CreatePopupMenu
Létrehoz egy előugró menüt, és csatolja az CMenu objektumhoz.
BOOL CreatePopupMenu();
Visszaadott érték
Nem, ha az előugró menü sikeresen létrejött; egyéb esetben 0.
Megjegyzések
A menü kezdetben üres. A menüelemek a tagfüggvény vagy InsertMenu a AppendMenu tagfüggvény használatával adhatók hozzá. Az alkalmazás hozzáadhatja az előugró menüt egy meglévő vagy előugró menühöz. A TrackPopupMenu tagfüggvény használható a menü lebegő előugró menüként való megjelenítésére és az előugró menü kijelöléseinek nyomon követésére.
Ha a menü egy ablakhoz van rendelve, az automatikusan megsemmisül, amikor az ablak elpusztul. Ha a menü egy meglévő menühöz van hozzáadva, az automatikusan el lesz pusztítva, amikor a menü elpusztul.
A kilépés előtt az alkalmazásnak felugró menühöz társított rendszererőforrásokat kell felszabadítania, ha a menü nincs hozzárendelve egy ablakhoz. Az alkalmazás a tagfüggvény meghívásával felszabadít egy menüt DestroyMenu .
Example
Lásd a példát a CMenu::CreateMenu.
CMenu::DeleteMenu
Töröl egy elemet a menüből.
BOOL DeleteMenu(
UINT nPosition,
UINT nFlags);
Paraméterek
nPosition
Megadja a törölni kívánt menüelemet, a megadott módon nFlags.
nFlags
A következő értelmezésre nPosition szolgál:
nFlags |
A nPosition |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Ha a menüelemhez tartozik előugró menü, az előugró menüben lévő fogópontot megsemmisíti, DeleteMenu és felszabadítja az előugró menü által használt memóriát.
Amikor egy ablakban található menüt módosítanak (függetlenül attól, hogy megjelenik-e az ablak), az alkalmazásnak hívnia CWnd::DrawMenuBarkell.
Example
Lásd a példát a CWnd::GetMenu.
CMenu::DeleteTempMap
Az üresjárati idő kezelője CWinApp automatikusan meghívja, törli a FromHandle tagfüggvény által létrehozott ideiglenes CMenu objektumokat.
static void PASCAL DeleteTempMap();
Megjegyzések
DeleteTempMap Az objektum törlése előtt leválasztja az ideiglenes CMenu objektumhoz csatolt Windows menüobjektumot CMenu .
Example
// DeleteTempMap() is a static member and does not need
// an instantiated CMenu object.
CMenu::DeleteTempMap();
CMenu::DestroyMenu
Megsemmisíti a menüt és a használt Windows-erőforrásokat.
BOOL DestroyMenu();
Visszaadott érték
Nonzero, ha a menü megsemmisül; egyéb esetben 0.
Megjegyzések
A menü le lesz választva az CMenu objektumról, mielőtt megsemmisítené. A Rendszer automatikusan meghívja a Windows DestroyMenu függvényt a CMenu destruktorban.
Example
Lásd a példát a CMenu::CreateMenu.
CMenu::Detach
Leválaszt egy Windows-menüt egy CMenu objektumról, és visszaadja a leírót.
HMENU Detach();
Visszaadott érték
A leíró típusa HMENUwindowsos menübe, ha sikeres; ellenkező esetben NULL.
Megjegyzések
Az m_hMenu adattag a következőre NULLvan állítva: .
Example
CMenu mnu;
HMENU hmnu = AfxGetMainWnd()->GetMenu()->GetSafeHmenu();
mnu.Attach(hmnu);
// Now you can manipulate the window's menu as a CMenu
// object...
mnu.Detach();
CMenu::DrawItem
A keretrendszer meghívja, amikor egy tulajdonos által rajzolt menü vizuális aspektusa megváltozik.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Paraméterek
lpDrawItemStruct
Mutató egy DRAWITEMSTRUCT szerkezetre, amely a szükséges rajztípussal kapcsolatos információkat tartalmazza.
Megjegyzések
A itemAction struktúra tagja DRAWITEMSTRUCT határozza meg a végrehajtandó rajzműveletet. A tagfüggvény felülbírálása egy tulajdonosi rajzobjektum CMenu rajzának implementálásához. Az alkalmazásnak vissza kell állítania az összes grafikus eszközillesztő (GDI) objektumot, amely a tagfüggvény bezárása előtt megadott lpDrawItemStruct megjelenítési környezethez van kiválasztva.
Tekintse meg CWnd::OnDrawItem a DRAWITEMSTRUCT szerkezet leírását.
Example
Az alábbi kód az MFC-mintából CTRLTEST származik:
// Override DrawItem() to implement drawing for an owner-draw CMenu object.
// CColorMenu is a CMenu-derived class.
void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC *pDC = CDC::FromHandle(lpDIS->hDC);
COLORREF cr = (COLORREF)lpDIS->itemData; // RGB in item data
if (lpDIS->itemAction & ODA_DRAWENTIRE)
{
// Paint the color item in the color requested
CBrush br(cr);
pDC->FillRect(&lpDIS->rcItem, &br);
}
if ((lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
// item has been selected - hilite frame
COLORREF crHilite = RGB(255 - GetRValue(cr),
255 - GetGValue(cr), 255 - GetBValue(cr));
CBrush br(crHilite);
pDC->FrameRect(&lpDIS->rcItem, &br);
}
if (!(lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & ODA_SELECT))
{
// Item has been de-selected -- remove frame
CBrush br(cr);
pDC->FrameRect(&lpDIS->rcItem, &br);
}
}
CMenu::EnableMenuItem
Engedélyezi, letiltja vagy halványítja a menüelemet.
UINT EnableMenuItem(
UINT nIDEnableItem,
UINT nEnable);
Paraméterek
nIDEnableItem
Megadja az engedélyezendő menüelemet, a megadott módon nEnable. Ez a paraméter megadhatja az előugró menüelemeket és a standard menüelemeket.
nEnable
Megadja a végrehajtandó műveletet. Ez lehet a kombináció, MF_DISABLEDMF_ENABLEDvagy MF_GRAYEDa , vagy .MF_BYCOMMANDMF_BYPOSITION Ezek az értékek a C++ bitenkénti VAGY operátorral (|) kombinálhatók. Ezek az értékek a következő jelentéssel rendelkeznek:
MF_BYCOMMANDMegadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett beállítás.MF_BYPOSITIONMegadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van.MF_DISABLEDLetiltja a menüelemet, hogy ne lehessen kijelölni, de ne halványíthassa el.MF_ENABLEDEngedélyezi a menüelemet, hogy kijelölhető legyen, és visszaállítsa a halvány állapotából.MF_GRAYEDLetiltja a menüelemet, hogy ne lehessen kijelölni és halványítani.
Visszaadott érték
Előző állapot (MF_DISABLED, MF_ENABLEDvagy ) vagy MF_GRAYED-1, ha érvénytelen.
Megjegyzések
A CreateMenu, InsertMenu, ModifyMenués LoadMenuIndirect tagfüggvények a menüelem állapotát (engedélyezve, letiltva vagy halványítva) is beállíthatják.
Az MF_BYPOSITION érték használatához egy alkalmazásnak a megfelelőt CMenukell használnia. Ha a CMenu menüsávot használja, a rendszer egy felső szintű menüelemet (a menüsáv egyik elemét) érint. Ha egy előugró vagy beágyazott előugró menüben lévő elem állapotát pozíció szerint szeretné beállítani, az alkalmazásnak meg kell adnia az CMenu előugró menüt.
Amikor egy alkalmazás megadja a jelölőt, a Windows ellenőrzi az MF_BYCOMMAND összes előugró menüelemet, amely alá van rendelve a CMenumenünek, ezért ha nem szerepelnek ismétlődő menüelemek, a menüsáv használata CMenu elegendő.
Example
// The code fragment below shows how to disable (and gray out) the
// File\New menu item.
// NOTE: m_bAutoMenuEnable is set to FALSE in the constructor of
// CMainFrame so no ON_UPDATE_COMMAND_UI or ON_COMMAND handlers are
// needed, and CMenu::EnableMenuItem() will work as expected.
CMenu *mmenu = GetMenu();
CMenu *submenu = mmenu->GetSubMenu(0);
submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
CMenu::FromHandle
Egy windowsos fogópontnak adott objektumra mutató mutatót CMenu ad vissza egy menühöz.
static CMenu* PASCAL FromHandle(HMENU hMenu);
Paraméterek
hMenu
Windows-leíró egy menühöz.
Visszaadott érték
Egy ideiglenes CMenu vagy állandó mutató.
Megjegyzések
Ha egy CMenu objektum még nincs csatolva a Windows menüobjektumhoz, a rendszer létrehoz és csatol egy ideiglenes CMenu objektumot.
Ez az ideiglenes CMenu objektum csak addig érvényes, amíg az alkalmazás következő alkalommal nem rendelkezik tétlen idővel az eseményhurkában, és ekkor az összes ideiglenes objektum törlődik.
Example
Lásd a példát a CMenu::CreateMenu.
CMenu::GetDefaultItem
Meghatározza a megadott menü alapértelmezett menüelemét.
UINT GetDefaultItem(
UINT gmdiFlags,
BOOL fByPos = FALSE);
Paraméterek
gmdiFlags
Érték, amely meghatározza, hogy a függvény hogyan keres menüelemeket. Ez a paraméter a következő értékek egyikét vagy kombinációját sem tartalmazhatja:
| Érték | Meaning |
|---|---|
GMDI_GOINTOPOPUPS |
Azt adja meg, hogy ha az alapértelmezett elem egy almenüt megnyitó elem, akkor a függvény rekurzív módon keres a megfelelő almenüben. Ha az almenü nem tartalmaz alapértelmezett elemet, a visszatérési érték azonosítja az almenüt megnyitó elemet. Alapértelmezés szerint a függvény a megadott menü első alapértelmezett elemét adja vissza, függetlenül attól, hogy egy almenüt megnyitó elemről van-e szó. |
GMDI_USEDISABLED |
Megadja, hogy a függvény egy alapértelmezett elemet adjon vissza, még akkor is, ha le van tiltva. Alapértelmezés szerint a függvény kihagyja a letiltott vagy szürkés elemeket. |
fByPos
Érték, amely meghatározza, hogy a menüelem azonosítóját vagy pozícióját szeretné-e lekérni. Ha ez a paraméter, FALSEa függvény visszaadja az azonosítót. Ellenkező esetben a függvény visszaadja a pozíciót.
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték a menüelem azonosítója vagy pozíciója. Ha a függvény sikertelen, a visszatérési érték - 1.
Megjegyzések
Ez a tagfüggvény implementálja a Win32 függvény GetMenuDefaultItemviselkedését a Windows SDK-ban leírtak szerint.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::GetMenuContextHelpId
Lekéri a környezethez társított súgóazonosítót CMenu.
DWORD GetMenuContextHelpId() const;
Visszaadott érték
A környezet súgóazonosítója, amelyhez jelenleg társítva van, ha rendelkezik ilyennel CMenu , ellenkező esetben nulla.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::GetMenuInfo
Beolvassa egy menü adatait.
BOOL GetMenuInfo(LPMENUINFO lpcmi) const;
Paraméterek
lpcmi
A menü információját tartalmazó struktúra mutatója MENUINFO .
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték nem nulla; ellenkező esetben a visszatérési érték nulla.
Megjegyzések
Hívja meg ezt a függvényt a menü adatainak lekéréséhez.
CMenu::GetMenuItemCount
Meghatározza az előugró vagy felső szintű menü elemeinek számát.
UINT GetMenuItemCount() const;
Visszaadott érték
A menü elemeinek száma, ha a függvény sikeres; egyéb esetben -1.
Example
Lásd a példát a CWnd::GetMenu.
CMenu::GetMenuItemID
Beolvasja a menüelem azonosítót a megadott helyen található menüelemhez nPos.
UINT GetMenuItemID(int nPos) const;
Paraméterek
nPos
Megadja annak a menüelemnek a helyét (nulla alapú), amelynek azonosítóját lekéri.
Visszaadott érték
Ha a függvény sikeres, a megadott elem elemazonosítója egy előugró menüben. Ha a megadott elem előugró menü (szemben az előugró menü egyik elemével), a visszatérési érték -1. Ha nPos egy SEPARATOR menüelemnek felel meg, a visszatérési érték 0.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::GetMenuItemInfo
Beolvassa a menüelem adatait.
BOOL GetMenuItemInfo(
UINT uItem,
LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE);
Paraméterek
uItem
A menüelem azonosítója vagy pozíciója az információk lekéréséhez. Ennek a paraméternek a jelentése a paraméter értékétől ByPosfügg.
lpMenuItemInfo
A Windows SDK-ban leírt, a menüvel kapcsolatos információkat tartalmazó mutató MENUITEMINFO.
fByPos
A jelentés jelentését nIDItemmeghatározó érték. Alapértelmezés szerint ez azFALSE, amely azt jelzi, ByPos hogy a felhasználói felület egy menüelem-azonosító. Ha ByPos nincs beállítva FALSE, a menüelem pozícióját jelzi.
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték nem lesz nulla. Ha a függvény sikertelen, a visszatérési érték nulla. A kiterjesztett hibainformációk lekéréséhez használja a Win32 függvényt GetLastErrora Windows SDK-ban leírtak szerint.
Megjegyzések
Ez a tagfüggvény implementálja a Win32 függvény GetMenuItemInfoviselkedését a Windows SDK-ban leírtak szerint. Vegye figyelembe, hogy az MFC implementációjában GetMenuItemInfonem használ fogópontot a menühöz.
Example
// CMainFrame::OnToggleTestMenuInfo() is a menu command handler for
// "Toggle Info" menu item (whose resource id is ID_MENU_TOGGLEINFO). It
// toggles the checked or unchecked state of the "Toggle Info" menu item.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnToggleTestMenuItemInfo()
{
// Get the popup menu which contains the "Toggle Info" menu item.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(4);
// Check the state of the "Toggle Info" menu item. Check the menu item
// if it is currently unchecked. Otherwise, uncheck the menu item
// if it is not currently checked.
MENUITEMINFO info;
info.cbSize = sizeof (MENUITEMINFO); // must fill up this field
info.fMask = MIIM_STATE; // get the state of the menu item
VERIFY(submenu->GetMenuItemInfo(ID_MENU_TOGGLEINFO, &info));
if (info.fState & MF_CHECKED)
submenu->CheckMenuItem(ID_MENU_TOGGLEINFO, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_MENU_TOGGLEINFO, MF_CHECKED | MF_BYCOMMAND);
}
CMenu::GetMenuState
A megadott menüelem állapotát vagy az előugró menü elemeinek számát adja vissza.
UINT GetMenuState(
UINT nID,
UINT nFlags) const;
Paraméterek
nID
A menüelem azonosítóját adja meg a megadott módon nFlags.
nFlags
A természetét nIDadja meg. A következő értékek egyike lehet:
MF_BYCOMMANDMegadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett beállítás.MF_BYPOSITIONMegadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van.
Visszaadott érték
Az érték 0xFFFFFFFF , ha a megadott elem nem létezik. Ha nId egy előugró menüt azonosít, a magas szintű bájt az előugró menü elemeinek számát, az alacsony sorrendű bájt pedig az előugró menühöz társított menüjelölőket tartalmazza. Ellenkező esetben a visszatérési érték az alábbi listából származó értékek maszkja (LOGIKAI VAGY) (ez a maszk az azonosító menüelem nId állapotát írja le):
MF_CHECKEDVáltógombkéntMF_UNCHECKEDműködik az elem melletti alapértelmezett pipa elhelyezéséhez. Amikor az alkalmazás pipa bitképeket biztosít (lásd aSetMenuItemBitmapstagfüggvényt), megjelenik a "pipa" bitkép.MF_DISABLEDLetiltja a menüelemet, hogy ne lehessen kijelölni, de ne halványíthassa el.MF_ENABLEDEngedélyezi a menüelemet, hogy kijelölhető legyen, és visszaállítsa a halvány állapotából. Vegye figyelembe, hogy ennek az állandónak az értéke 0; az alkalmazás nem tesztelhet 0-s hibát az érték használatakor.MF_GRAYEDLetiltja a menüelemet, hogy ne lehessen kijelölni és halványítani.MF_MENUBARBREAKAz elemet egy új sorban helyezi el statikus menükben vagy egy új oszlopban az előugró menükben. Az új előugró menüoszlopot függőleges osztásvonal választja el a régi oszloptól.MF_MENUBREAKAz elemet egy új sorban helyezi el statikus menükben vagy egy új oszlopban az előugró menükben. Az oszlopok között nincs elválasztó vonal.MF_SEPARATORVízszintes osztóvonalat rajzol. Csak előugró menüben használható. Ez a sor nem halványítható, nem tiltható le és nem emelhető ki. A rendszer figyelmen kívül hagyja az egyéb paramétereket.MF_UNCHECKEDVáltógombkéntMF_CHECKEDműködik az elem melletti pipa eltávolításához. Amikor az alkalmazás pipa bitképeket biztosít (lásd aSetMenuItemBitmapstagfüggvényt), megjelenik a "pipa kikapcsolva" bitkép. Vegye figyelembe, hogy ennek az állandónak az értéke 0; az alkalmazás nem tesztelhet 0-s hibát az érték használatakor.
Example
// CMainFrame::OnToggleTestMenuState() is a menu command handler for
// "Toggle State" menu item (whose resource id is ID_MENU_TOGGLESTATE).
// It toggles the checked or unchecked state of the "Toggle State" menu item.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnToggleTestMenuState()
{
// Get the popup menu which contains the "Toggle State" menu item.
CMenu *mmenu = GetMenu();
CMenu *submenu = mmenu->GetSubMenu(4);
// Check the state of the "Toggle State" menu item. Check the menu item
// if it is currently unchecked. Otherwise, uncheck the menu item
// if it is not currently checked.
UINT state = submenu->GetMenuState(ID_MENU_TOGGLESTATE, MF_BYCOMMAND);
ASSERT(state != 0xFFFFFFFF);
if (state & MF_CHECKED)
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_CHECKED | MF_BYCOMMAND);
}
CMenu::GetMenuString
Másolja a megadott menüelem címkéjét a megadott pufferbe.
int GetMenuString(
UINT nIDItem,
LPTSTR lpString,
int nMaxCount,
UINT nFlags) const;
int GetMenuString(
UINT nIDItem,
CString& rString,
UINT nFlags) const;
Paraméterek
nIDItem
A menüelem vagy a menüelem eltolásának egész számazonosítóját nFlagsadja meg a menü értékétől függően.
lpString
A címkét fogadó pufferre mutat.
rString
Hivatkozás egy CString objektumra, amely a másolt menüsztringet fogadja.
nMaxCount
Megadja a másolandó címke maximális hosszát (karakterben). Ha a címke hosszabb, mint a megadott nMaxCountmaximális érték, a további karakterek csonkulnak.
nFlags
Megadja a paraméter értelmezését nIDItem . A következő értékek egyike lehet:
nFlags |
A nIDItem |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
Visszaadott érték
A pufferbe másolt karakterek tényleges számát adja meg, a null terminátort nem beleértve.
Megjegyzések
A nMaxCount paraméternek egy nagyobbnak kell lennie, mint a címke karaktereinek száma a sztringet megszakító null karakter elhelyezéséhez.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::GetSafeHmenu
HMENU Az objektum vagy mutató NULLCMenu által CMenu becsomagolt értéket adja vissza.
HMENU GetSafeHmenu() const;
Example
Lásd a példát a CMenu::LoadMenu.
CMenu::GetSubMenu
Lekéri egy CMenu előugró menü objektumát.
CMenu* GetSubMenu(int nPos) const;
Paraméterek
nPos
A menüben található előugró menü helyét adja meg. A pozícióértékek az első menüelemnél 0-nál kezdődnek. Az előugró menü azonosítója ebben a függvényben nem használható.
Visszaadott érték
Mutató egy CMenu olyan objektumra, amelynek m_hMenu tagja az előugró menühöz tartozó fogópontot tartalmaz, ha az adott helyen előugró menü található; ellenkező esetben NULL. Ha egy CMenu objektum nem létezik, akkor létrejön egy ideiglenes objektum. A CMenu visszaadott mutatót nem szabad tárolni.
Example
Lásd a példát a CMenu::TrackPopupMenu.
CMenu::InsertMenu
Beszúr egy új menüelemet a megadott nPosition pozícióba, és más elemeket is áthelyez a menübe.
BOOL InsertMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL InsertMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem,
const CBitmap* pBmp);
Paraméterek
nPosition
Megadja azt a menüelemet, amely elé be szeretné szúrni az új menüelemet. A nFlags paraméter a következő módokon értelmezhető nPosition :
nFlags |
A nPosition |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. Ha nPosition -1, az új menüelem hozzá lesz fűzve a menü végéhez. |
nFlags
Meghatározza az értelmezés módját nPosition , és megadja az új menüelem állapotával kapcsolatos információkat, amikor hozzáadja azt a menühöz. A beállítható jelölők listájáért tekintse meg a tagfüggvényt AppendMenu . Egynél több érték megadásához használja a bitenkénti VAGY operátort, hogy kombinálja őket a jelölővel vagy MF_BYPOSITION a MF_BYCOMMAND jelölővel.
nIDNewItem
Megadja az új menüelem parancsazonosítóját, vagy ha nFlags be van állítva MF_POPUP, az előugró menü menüfogópontját (HMENU). A nIDNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges), ha nFlags be van állítva MF_SEPARATOR.
lpszNewItem
Az új menüelem tartalmát adja meg.
nFlags a következő módokon értelmezhető lpszNewItem :
nFlags |
A lpszNewItem |
|---|---|
MF_OWNERDRAW |
Egy alkalmazás által megadott 32 bites értéket tartalmaz, amelyet az alkalmazás a menüelemhez társított további adatok fenntartására használhat. Ez a 32 bites érték az alkalmazás számára elérhető az itemData és az üzenetek által WM_MEASUREITEMWM_DRAWITEM megadott struktúra tagjában. Ezek az üzenetek akkor lesznek elküldve, amikor a menüelem először megjelenik vagy módosul. |
MF_STRING |
Egy null értékű sztringre mutató hosszú mutatót tartalmaz. Ez az alapértelmezett értelmezés. |
MF_SEPARATOR |
A lpszNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges). |
pBmp
CBitmap A menüelemként használt objektumra mutat.
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Az alkalmazás a menüelem állapotát a következő értékekkel nFlagsadhatja meg:
Ha egy ablakban található menüt módosítanak (függetlenül attól, hogy megjelenik-e az ablak), az alkalmazásnak hívnia CWnd::DrawMenuBarkell.
Amikor nIDNewItem előugró menüt ad meg, az annak a menünek a része lesz, amelyben be van szúrva. Ha a menü elpusztul, a beszúrt menü is el lesz pusztítva. A beszúrt menüt le kell választani egy CMenu objektumról az ütközés elkerülése érdekében.
Ha az aktív több dokumentumfelület (MDI) gyermekablaka teljes méretű, és egy alkalmazás előugró menüt szúr be az MDI-alkalmazás menüjébe a függvény meghívásával és a MF_BYPOSITION jelölő megadásával, a menü a vártnál messzebbre lesz beszúrva. Ez azért történik, mert az aktív MDI gyermekablak Vezérlő menüjét beszúrja az MDI-keretablak menüsávjának első helyére. A menü megfelelő elhelyezéséhez az alkalmazásnak 1-et kell hozzáadnia az egyébként használt pozícióértékhez. Az alkalmazás az WM_MDIGETACTIVE üzenet használatával meghatározhatja, hogy az aktuálisan aktív gyermekablak teljes méretű-e.
Example
// CMainFrame::OnChangeFileMenu() is a menu command handler for
// CMainFrame class, which in turn is a CFrameWnd-derived class.
// It modifies the File menu by inserting, removing and renaming
// some menu items. Other operations include associating a context
// help id and setting default menu item to the File menu.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnChangeFileMenu()
{
// Get the menu from the application window.
CMenu *mmenu = GetMenu();
// Look for "File" menu.
int pos = FindMenuItem(mmenu, _T("&File"));
if (pos == -1)
return;
// Remove "New" menu item from the File menu.
CMenu *submenu = mmenu->GetSubMenu(pos);
pos = FindMenuItem(submenu, _T("&New\tCtrl+N"));
if (pos > -1)
submenu->RemoveMenu(pos, MF_BYPOSITION);
// Look for "Open" menu item from the File menu. Insert a new
// menu item called "Close" right after the "Open" menu item.
// ID_CLOSEFILE is the command id for the "Close" menu item.
pos = FindMenuItem(submenu, _T("&Open...\tCtrl+O"));
if (pos > -1)
submenu->InsertMenu(pos + 1, MF_BYPOSITION, ID_CLOSEFILE, _T("&Close"));
// Rename menu item "Exit" to "Exit Application".
pos = FindMenuItem(submenu, _T("E&xit"));
if (pos > -1)
{
UINT id = submenu->GetMenuItemID(pos);
submenu->ModifyMenu(id, MF_BYCOMMAND, id, _T("E&xit Application"));
}
// Associate a context help ID with File menu, if one is not found.
// ID_FILE_CONTEXT_HELPID is the context help ID for the File menu
// that is defined in resource file.
if (submenu->GetMenuContextHelpId() == 0)
submenu->SetMenuContextHelpId(ID_FILE_CONTEXT_HELPID);
// Set "Open" menu item as the default menu item for the File menu,
// if one is not found. So, when a user double-clicks the File
// menu, the system sends a command message to the menu's owner
// window and closes the menu as if the File\Open command item had
// been chosen.
if (submenu->GetDefaultItem(GMDI_GOINTOPOPUPS, TRUE) == -1)
{
pos = FindMenuItem(submenu, _T("&Open...\tCtrl+O"));
submenu->SetDefaultItem(pos, TRUE);
}
}
// FindMenuItem() will find a menu item string from the specified
// popup menu and returns its position (0-based) in the specified
// popup menu. It returns -1 if no such menu item string is found.
int FindMenuItem(CMenu *Menu, LPCTSTR MenuString)
{
ASSERT(Menu);
ASSERT(::IsMenu(Menu->GetSafeHmenu()));
int count = Menu->GetMenuItemCount();
for (int i = 0; i < count; i++)
{
CString str;
if (Menu->GetMenuString(i, str, MF_BYPOSITION) &&
str.Compare(MenuString) == 0)
return i;
}
return -1;
}
CMenu::InsertMenuItem
Új menüelemet szúr be a megadott pozícióba egy menüben.
BOOL InsertMenuItem(
UINT uItem,
LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE);
Paraméterek
uItem
uItem A Leírás a Windows SDK-ban InsertMenuItem található.
lpMenuItemInfo
lpmii A Leírás a Windows SDK-ban InsertMenuItem található.
fByPos
fByPosition A Leírás a Windows SDK-ban InsertMenuItem található.
Megjegyzések
Ez a függvény a Windows SDK-ban leírt körbefut InsertMenuItem.
CMenu::LoadMenu
Betölt egy menüerőforrást az alkalmazás végrehajtható fájljából, és csatolja az CMenu objektumhoz.
BOOL LoadMenu(LPCTSTR lpszResourceName);
BOOL LoadMenu(UINT nIDResource);
Paraméterek
lpszResourceName
Egy null értékű sztringre mutat, amely tartalmazza a betöltendő menüerőforrás nevét.
nIDResource
Megadja a betöltendő menüerőforrás menüazonosítóját.
Visszaadott érték
Nem, ha a menüerőforrás betöltése sikeresen megtörtént; egyéb esetben 0.
Megjegyzések
A kilépés előtt az alkalmazásnak szabaddá kell tennie a menühöz társított rendszererőforrásokat, ha a menü nincs hozzárendelve egy ablakhoz. Az alkalmazás a tagfüggvény meghívásával felszabadít egy menüt DestroyMenu .
Example
// CMainFrame::OnReplaceMenu() is a menu command handler for CMainFrame
// class, which in turn is a CFrameWnd-derived class. It loads a new
// menu resource and replaces the SDI application window's menu bar with
// this new menu. CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnReplaceMenu()
{
// Load the new menu.
m_ShortMenu.LoadMenu(IDR_SHORT_MENU);
ASSERT(m_ShortMenu);
// Remove and destroy the old menu
SetMenu(NULL);
::DestroyMenu(m_hMenuDefault);
// Add the new menu
SetMenu(&m_ShortMenu);
// Assign default menu
m_hMenuDefault = m_ShortMenu.GetSafeHmenu(); // or m_ShortMenu.m_hMenu;
}
CMenu::LoadMenuIndirect
Betölt egy erőforrást egy menüsablonból a memóriába, és csatolja az CMenu objektumhoz.
BOOL LoadMenuIndirect(const void* lpMenuTemplate);
Paraméterek
lpMenuTemplate
Egy menüsablonra mutat (amely egyetlen MENUITEMTEMPLATEHEADER struktúra és egy vagy több MENUITEMTEMPLATE struktúra gyűjteménye). A két struktúrával kapcsolatos további információkért lásd a Windows SDK-t.
Visszaadott érték
Nem, ha a menüerőforrás betöltése sikeresen megtörtént; egyéb esetben 0.
Megjegyzések
A menüsablonok fejlécek, amelyeket egy vagy több MENUITEMTEMPLATE szerkezetből álló gyűjtemény követ, amelyek mindegyike tartalmazhat egy vagy több menüelemet és előugró menüt.
A verziószámnak 0-nak kell lennie.
A mtOption jelzőknek tartalmazniuk MF_END kell az előugró lista utolsó elemét és a fő lista utolsó elemét.
AppendMenu A többi jelölő tagfüggvényének megtekintése. A mtId tagot ki kell hagyni a struktúrából, MENUITEMTEMPLATE ha MF_POPUP meg van adva.mtOption
A struktúra számára MENUITEMTEMPLATE lefoglalt területnek elég mtString nagynak kell lennie ahhoz, hogy null értékű sztringként tartalmazza a menüelem nevét.
A kilépés előtt az alkalmazásnak szabaddá kell tennie a menühöz társított rendszererőforrásokat, ha a menü nincs hozzárendelve egy ablakhoz. Az alkalmazás a tagfüggvény meghívásával felszabadít egy menüt DestroyMenu .
Example
// CMainFrame::OnLoadMenuIndirect() is a menu command handler for
// CMainFrame class, which in turn is a CFrameWnd-derived class. It
// shows how to use LoadMenuIndirect() to load a resource from a
// menu template in memory.
void CMainFrame::OnLoadMenuIndirect()
{
// For simplicity, allocate 500 bytes from stack. May use
// GlobalAlloc() to allocate memory bytes from heap.
BYTE milist[500];
memset(milist, 0, 500);
int bytes_left = sizeof(milist);
// Fill up the MENUITEMTEMPLATEHEADER structure.
MENUITEMTEMPLATEHEADER *mheader = (MENUITEMTEMPLATEHEADER*)milist;
mheader->versionNumber = 0;
mheader->offset = 0;
int bytes_used = sizeof(MENUITEMTEMPLATEHEADER);
bytes_left -= bytes_used;
// Add the following menu items to menu bar:
// File Edit
// Exit Copy
// Paste
bytes_used += AddMenuItem(milist + bytes_used, bytes_left, L"&File", 0,
TRUE, FALSE);
bytes_left -= bytes_used;
bytes_used += AddMenuItem(milist + bytes_used, bytes_left, L"E&xit",
ID_APP_EXIT, FALSE, TRUE);
bytes_left -= bytes_used;
bytes_used += AddMenuItem(milist + bytes_used, bytes_left, L"&Edit", 0,
TRUE, TRUE);
bytes_left -= bytes_used;
bytes_used += AddMenuItem(milist + bytes_used, bytes_left, L"&Copy",
ID_EDIT_COPY, FALSE, FALSE);
bytes_left -= bytes_used;
bytes_used += AddMenuItem(milist + bytes_used, bytes_left, L"&Paste",
ID_EDIT_PASTE, FALSE, TRUE);
bytes_left -= bytes_used;
// Load resource from a menu template in memory.
ASSERT(m_IndiMenu.LoadMenuIndirect(milist));
// Remove and destroy old menu
SetMenu(NULL);
::DestroyMenu(m_hMenuDefault);
// Add new menu.
SetMenu(&m_IndiMenu);
// Assign default menu
m_hMenuDefault = m_IndiMenu.m_hMenu;
}
// This is a helper function for adding a menu item (either a popup
// or command item) to the specified menu template.
//
// MenuTemplate - pointer to a menu template
// TemplateBytes - space remaining in MenuTemplate
// MenuString - string for the menu item to be added
// MenuID - id for the command item. Its value is ignored if
// IsPopup is TRUE.
// IsPopup - TRUE for popup menu (or submenu); FALSE for command
// item
// LastItem - TRUE if MenuString is the last item for the popup;
// FALSE otherwise.
UINT AddMenuItem(LPVOID MenuTemplate, int TemplateBytes, WCHAR *MenuString,
WORD MenuID, BOOL IsPopup, BOOL LastItem)
{
MENUITEMTEMPLATE *mitem = (MENUITEMTEMPLATE*)MenuTemplate;
UINT bytes_used = 0;
if (IsPopup) // for popup menu
{
if (LastItem)
mitem->mtOption = MF_POPUP | MF_END;
else
mitem->mtOption = MF_POPUP;
bytes_used += sizeof(mitem->mtOption);
mitem = (MENUITEMTEMPLATE*)((BYTE*)MenuTemplate + bytes_used);
// a popup doesn't have mtID!!!
TemplateBytes -= bytes_used;
wcscpy_s((WCHAR*)mitem, TemplateBytes / sizeof(WCHAR), MenuString);
bytes_used += (UINT)(sizeof(WCHAR) * (wcslen(MenuString) + 1)); // include '\0'
}
else // for command item
{
mitem->mtOption = LastItem ? MF_END : 0;
mitem->mtID = MenuID;
TemplateBytes -= bytes_used;
wcscpy_s(mitem->mtString, TemplateBytes / sizeof(WCHAR), MenuString);
bytes_used += (UINT)(sizeof(mitem->mtOption) + sizeof(mitem->mtID) +
sizeof(WCHAR) * (wcslen(MenuString) + 1)); // include '\0'
}
return bytes_used;
}
CMenu::m_hMenu
HMENU Az objektumhoz csatolt Windows menü leíróját CMenu adja meg.
HMENU m_hMenu;
Example
Lásd a példát a CMenu::LoadMenu.
CMenu::MeasureItem
A keretrendszer meghívta, amikor létrejön egy menü a tulajdonos-rajz stílussal.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Paraméterek
lpMeasureItemStruct
Egy struktúra mutatója MEASUREITEMSTRUCT .
Megjegyzések
Alapértelmezés szerint ez a tagfüggvény nem tesz semmit. Bírálja felül ezt a tagfüggvényt, és töltse ki a struktúrát, MEASUREITEMSTRUCT hogy tájékoztassa a Windowst a menü dimenzióiról.
Tekintse meg CWnd::OnMeasureItem a MEASUREITEMSTRUCT szerkezet leírását.
Example
Az alábbi kód az MFC-mintából CTRLTEST származik:
// Override MeasureItem() to return the size of the menu item.
// CColorMenu is a CMenu-derived class.
#define COLOR_BOX_WIDTH 20
#define COLOR_BOX_HEIGHT 20
void CColorMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
{
// all items are of fixed size
lpMIS->itemWidth = COLOR_BOX_WIDTH;
lpMIS->itemHeight = COLOR_BOX_HEIGHT;
}
CMenu::ModifyMenu
Meglévő menüelem módosítása a megadott nPositionhelyen.
BOOL ModifyMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL);
BOOL ModifyMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem,
const CBitmap* pBmp);
Paraméterek
nPosition
Megadja a módosítani kívánt menüelemet. A nFlags paraméter a következő módokon értelmezhető nPosition :
nFlags |
A nPosition |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
nFlags
Meghatározza az értelmezés módját nPosition , és tájékoztatást ad a menüelemen végrehajtott módosításokról. Az esetlegesen beállított jelzők listájáért tekintse meg a tagfüggvényt AppendMenu .
nIDNewItem
Megadja a módosított menüelem parancsazonosítóját, vagy ha nFlags be van állítva MF_POPUP, az előugró menü menüfogópontját (HMENU). A nIDNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges), ha nFlags be van állítva MF_SEPARATOR.
lpszNewItem
Az új menüelem tartalmát adja meg. A nFlags paraméter a következő módokon értelmezhető lpszNewItem :
nFlags |
A lpszNewItem |
|---|---|
MF_OWNERDRAW |
Egy alkalmazás által megadott 32 bites értéket tartalmaz, amelyet az alkalmazás a menüelemhez társított további adatok fenntartására használhat. Ez a 32 bites érték az alkalmazás számára a folyamatok MF_MEASUREITEM és MF_DRAWITEMa . |
MF_STRING |
Hosszú mutatót tartalmaz egy null értékű sztringre vagy egy CString. |
MF_SEPARATOR |
A lpszNewItem paraméter figyelmen kívül lesz hagyva (nem szükséges). |
pBmp
CBitmap A menüelemként használt objektumra mutat.
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Az alkalmazás a menüelem új állapotát adja meg az értékek beállításával a következőben nFlags: . Ha ez a függvény lecseréli a menüelemhez társított előugró menüt, azzal megsemmisíti a régi előugró menüt, és felszabadítja az előugró menü által használt memóriát.
Amikor nIDNewItem előugró menüt ad meg, az annak a menünek a része lesz, amelyben be van szúrva. Ha a menü elpusztul, a beszúrt menü is el lesz pusztítva. A beszúrt menüt le kell választani egy CMenu objektumról az ütközés elkerülése érdekében.
Ha egy ablakban található menüt módosítanak (függetlenül attól, hogy megjelenik-e az ablak), az alkalmazásnak hívnia CWnd::DrawMenuBarkell. A meglévő menüelemek attribútumainak módosításához sokkal gyorsabban használhatja az és EnableMenuItem a CheckMenuItem tagfüggvényeket.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::operator HMENU
Ezzel az operátorral lekérheti az objektum fogópontját CMenu .
operator HMENU() const;
Visszaadott érték
Ha sikeres, az objektum fogópontja CMenu ; NULLellenkező esetben.
Megjegyzések
A leíróval közvetlenül meghívhatja a Windows API-kat.
CMenu::operator !=
Meghatározza, hogy két menü logikailag nem egyenlő-e.
BOOL operator!=(const CMenu& menu) const;
Paraméterek
menu
Egy CMenu összehasonlításra szolgáló objektum.
Megjegyzések
Azt ellenőrzi, hogy a bal oldalon lévő menüobjektum nem egyenlő-e a jobb oldalon lévő menüobjektummal.
CMenu::operator ==
Meghatározza, hogy két menü logikailag egyenlő-e.
BOOL operator==(const CMenu& menu) const;
Paraméterek
menu
Egy CMenu összehasonlításra szolgáló objektum.
Megjegyzések
Azt ellenőrzi, hogy a bal oldalon lévő menüobjektum egyenlő-e (az HMENU érték szempontjából) a jobb oldalon lévő menüobjektummal.
CMenu::RemoveMenu
Töröl egy menüelemet a menüből egy társított előugró menüvel.
BOOL RemoveMenu(
UINT nPosition,
UINT nFlags);
Paraméterek
nPosition
Megadja az eltávolítandó menüelemet. A nFlags paraméter a következő módokon értelmezhető nPosition :
nFlags |
A nPosition |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
nFlags
Meghatározza az értelmezés módját nPosition .
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Az előugró menü fogópontját nem teszi tönkre, így a menü újra felhasználható. A függvény meghívása előtt az alkalmazás meghívhatja a GetSubMenu tagfüggvényt az előugró CMenu objektum újbóli lekéréséhez.
Amikor egy ablakban található menüt módosítanak (függetlenül attól, hogy megjelenik-e az ablak), az alkalmazásnak hívnia CWnd::DrawMenuBarkell.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::SetDefaultItem
Beállítja a megadott menü alapértelmezett menüelemét.
BOOL SetDefaultItem(
UINT uItem,
BOOL fByPos = FALSE);
Paraméterek
uItem
Az új alapértelmezett menüelem azonosítója vagy pozíciója, illetve – 1 alapértelmezett elem nélkül. Ennek a paraméternek a jelentése a paraméter értékétől fByPosfügg.
fByPos
A jelentés jelentését uItemmeghatározó érték. Ha ez a FALSEparaméter, uItem akkor a menüelem azonosítója. Ellenkező esetben ez egy menüelem pozíciója.
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték nem lesz nulla. Ha a függvény sikertelen, a visszatérési érték nulla. A kiterjesztett hibainformációk lekéréséhez használja a Win32 függvényt GetLastErrora Windows SDK-ban leírtak szerint.
Megjegyzések
Ez a tagfüggvény implementálja a Win32 függvény SetMenuDefaultItemviselkedését a Windows SDK-ban leírtak szerint.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::SetMenuContextHelpId
Környezet súgóazonosítóját társítja a CMenu.
BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
Paraméterek
dwContextHelpId
A környezet súgóazonosítója, amellyel CMenutársítani kell.
Visszaadott érték
Nonzero, ha sikeres; egyéb esetben 0
Megjegyzések
A menü minden eleme megosztja ezt az azonosítót – az egyes menüelemekhez nem lehet súgókörnyezet-azonosítót csatolni.
Example
Lásd a példát a CMenu::InsertMenu.
CMenu::SetMenuInfo
Egy menü információinak beállítása.
BOOL SetMenuInfo(LPCMENUINFO lpcmi);
Paraméterek
lpcmi
A menü információját tartalmazó struktúra mutatója MENUINFO .
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték nem nulla; ellenkező esetben a visszatérési érték nulla.
Megjegyzések
Hívja meg ezt a függvényt a menüre vonatkozó konkrét információk megadásához.
CMenu::SetMenuItemBitmaps
A megadott bitképeket egy menüelemhez társítja.
BOOL SetMenuItemBitmaps(
UINT nPosition,
UINT nFlags,
const CBitmap* pBmpUnchecked,
const CBitmap* pBmpChecked);
Paraméterek
nPosition
Megadja a módosítani kívánt menüelemet. A nFlags paraméter a következő módokon értelmezhető nPosition :
nFlags |
Az nPosition értelmezése |
|---|---|
MF_BYCOMMAND |
Megadja, hogy a paraméter megadja a meglévő menüelem parancsazonosítóját. Ez az alapértelmezett érték, ha egyik sem MF_BYCOMMANDMF_BYPOSITION van beállítva. |
MF_BYPOSITION |
Megadja, hogy a paraméter a meglévő menüelem pozícióját adja meg. Az első elem a 0. pozícióban van. |
nFlags
Meghatározza az értelmezés módját nPosition .
pBmpUnchecked
Megadja a nem bejelölt menüelemekhez használni kívánt bitképet.
pBmpChecked
Megadja az ellenőrzött menüelemekhez használni kívánt bitképet.
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Függetlenül attól, hogy a menüelem be van jelölve vagy nincs bejelölve, a Windows megjeleníti a megfelelő bitképet a menüelem mellett.
Ha vagy pBmpUncheckedpBmpChecked igen NULL, akkor a Windows nem jelenít meg semmit a megfelelő attribútum menüeleme mellett. Mindkét paraméter NULLesetén a Windows az alapértelmezett pipát használja az elem ellenőrzésekor, és eltávolítja a pipát, ha az elem nincs bejelölve.
Ha a menü elpusztul, ezek a bitképek nem lesznek megsemmisítve; az alkalmazásnak meg kell semmisítenie őket.
A Windows GetMenuCheckMarkDimensions függvény lekéri a menüelemekhez használt alapértelmezett pipa dimenzióit. Az alkalmazás ezeket az értékeket használja a függvényhez megadott bitképek megfelelő méretének meghatározásához. Kérje le a méretet, hozza létre a bitképeket, majd állítsa be őket.
Example
// The code fragment below is from CMainFrame::OnCreate and shows
// how to associate bitmaps with the "Bitmap" menu item.
// Whether the "Bitmap" menu item is checked or unchecked, Windows
// displays the appropriate bitmap next to the menu item. Both
// IDB_CHECKBITMAP and IDB_UNCHECKBITMAP bitmaps are loaded
// in OnCreate() and destroyed in the destructor of CMainFrame class.
// CMainFrame is a CFrameWnd-derived class.
// Load bitmaps from resource. Both m_CheckBitmap and m_UnCheckBitmap
// are member variables of CMainFrame class of type CBitmap.
ASSERT(m_CheckBitmap.LoadBitmap(IDB_CHECKBITMAP));
ASSERT(m_UnCheckBitmap.LoadBitmap(IDB_UNCHECKBITMAP));
// Associate bitmaps with the "Bitmap" menu item.
CMenu *mmenu = GetMenu();
CMenu *submenu = mmenu->GetSubMenu(4);
ASSERT(submenu->SetMenuItemBitmaps(ID_MENU_BITMAP, MF_BYCOMMAND,
&m_CheckBitmap, &m_UnCheckBitmap));
// This code fragment is taken from CMainFrame::~CMainFrame
// Destroy the bitmap objects if they are loaded successfully
// in OnCreate().
if (m_CheckBitmap.m_hObject)
m_CheckBitmap.DeleteObject();
if (m_UnCheckBitmap.m_hObject)
m_UnCheckBitmap.DeleteObject();
CMenu::SetMenuItemInfo
A menüelem adatainak módosítása.
BOOL SetMenuItemInfo(
UINT uItem,
LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE);
Paraméterek
uItem
uItem A Leírás a Windows SDK-ban SetMenuItemInfo található.
lpMenuItemInfo
lpmii A Leírás a Windows SDK-ban SetMenuItemInfo található.
fByPos
fByPosition A Leírás a Windows SDK-ban SetMenuItemInfo található.
Megjegyzések
Ez a függvény a Windows SDK-ban leírt körbefut SetMenuItemInfo.
CMenu::TrackPopupMenu
Megjelenít egy lebegő előugró menüt a megadott helyen, és nyomon követi az előugró menü elemeinek kiválasztását.
BOOL TrackPopupMenu(
UINT nFlags,
int x,
int y,
CWnd* pWnd,
LPCRECT lpRect = 0);
Paraméterek
nFlags
Megadja a képernyő-pozíció és az egér helyzetjelzőit. Tekintse meg TrackPopupMenu az elérhető jelzők listáját.
x
Az előugró menü képernyőkoordinátáinak vízszintes pozícióját adja meg. A paraméter értékétől nFlags függően a menü ehhez a pozícióhoz képest balra igazítható, jobbra igazítható vagy középre igazítható.
y
A képernyő tetejének képernyőkoordinátáiban megadott függőleges pozíciót adja meg.
pWnd
Azonosítja az előugró menüt tartalmazó ablakot. Ez a paraméter még akkor sem lehet NULL, ha a TPM_NONOTIFY jelölő meg van adva. Ez az ablak az összes WM_COMMAND üzenetet megkapja a menüből. A Windows 3.1-s és újabb verzióiban az ablak nem kap üzeneteket, amíg TrackPopupMenu vissza nem térWM_COMMAND. A Windows 3.0-ban az ablak a visszatérés előtt TrackPopupMenu üzeneteket fogadWM_COMMAND.
lpRect
Figyelmen kívül hagyott.
Visszaadott érték
Ez a metódus a Windows SDK-ban történő hívás TrackPopupMenu eredményét adja vissza.
Megjegyzések
A lebegő előugró menü bárhol megjelenhet a képernyőn.
Example
// The code fragment shows how to get the File menu from the
// application window and displays it as a floating popup menu
// when the right mouse button is clicked in view.
// CMdiView is a CView-derived class.
void CMdiView::OnRButtonDown(UINT nFlags, CPoint point)
{
CView::OnRButtonDown(nFlags, point);
CMenu *menu_bar = AfxGetMainWnd()->GetMenu();
CMenu *file_menu = menu_bar->GetSubMenu(0);
ASSERT(file_menu);
ClientToScreen(&point);
file_menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x,
point.y, this);
}
CMenu::TrackPopupMenuEx
Megjelenít egy lebegő előugró menüt a megadott helyen, és nyomon követi az előugró menü elemeinek kiválasztását.
BOOL TrackPopupMenuEx(
UINT fuFlags,
int x,
int y,
CWnd* pWnd,
LPTPMPARAMS lptpm);
Paraméterek
fuFlags
A kiterjesztett menü különböző függvényeit adja meg. Az összes érték és jelentés felsorolását lásd TrackPopupMenuEx: .
x
Az előugró menü képernyőkoordinátáinak vízszintes pozícióját adja meg.
y
A képernyő tetejének képernyőkoordinátáiban megadott függőleges pozíciót adja meg.
pWnd
Az előugró menüt birtokba vevő ablakra mutató mutató, amely a létrehozott menüből fogadja az üzeneteket. Ez az ablak az aktuális alkalmazás bármelyik ablaka lehet, de nem lehet NULL. Ha a paraméterben adja megTPM_NONOTIFY, fuFlags a függvény nem küld üzeneteket.pWnd A függvénynek vissza kell térnie ahhoz az ablakhoz, amely pWnd az üzenet fogadására WM_COMMAND mutat.
lptpm
Mutasson egy TPMPARAMS olyan struktúrára, amely a képernyő egy területét határozza meg, és a menü nem fedhet át átfedést. Ez a paraméter lehet NULL.
Visszaadott érték
Ha a paraméterben adja meg TPM_RETURNCMD , fuFlags a visszatérési érték a felhasználó által kiválasztott elem menüelem-azonosítója. Ha a felhasználó kijelölés nélkül megszakítja a menüt, vagy hiba történik, akkor a visszatérési érték 0.
Ha nem adja meg TPM_RETURNCMD a fuFlags paramétert, a visszatérési érték nem lesz nulla, ha a függvény sikeres, és 0, ha sikertelen. A kiterjesztett hibainformációk lekéréséhez hívja meg a következőt GetLastError:
Megjegyzések
A lebegő előugró menü bárhol megjelenhet a képernyőn. További információ az előugró menü létrehozásakor felmerülő hibák kezeléséről: TrackPopupMenuEx.
Lásd még
MFC-minta CTRLTEST
MFC-minta DYNAMENU
CObject osztály
hierarchiadiagram