Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Programutvecklare kan använda MSAAMENUINFO- strukturen för att exponera namnen på ägarskapade menyalternativ. Genom att associera den här strukturen med de användardefinierade menyobjektsdata behöver du inte exponera menyalternativen med IAccessible.
När du skapar en ägarritad meny definierar du en klass eller struktur för den ägarritade menyobjektens data och skapar instanser av den här klassen för varje menyobjekt. Skicka in en pekare till objektdata när du lägger till objekt på menyn.
Om du vill exponera namnen på menyalternativen måste MSAAMENUINFO struktur vara den första medlemmen i strukturen som definierar programspecifika objektdata, som du ser i följande exempel:
// Application-specific owner-drawn menu info struct. Owner-drawn data
// is a pointer to one of these.
struct MenuEntry
{
MSAAMENUINFO m_MSAA; // MSAA info - must be first member
LPTSTR m_pName; // Displayed menu text or NULL for
// separator item
int m_CmdID; // Menu command ID
int m_IconIndex; // Index of icon in bitmap or -1 for
// for separator
};
Den MSAAMENUINFO- struktur kan inte vara medlem i en klass som innehåller virtuella funktioner. När koden kompileras är den första medlemmen i klassen alltid en kompilatorgenererad pekare till en tabell med de virtuella funktionerna. Undvik det här problemet genom att skapa en objektdatastruktur som innehåller MSAAMENUINFO som den första medlemmen. Den andra medlemmen är en pekare till en instans av klassen som definierar ägarritade data. I följande exempel visas den här tekniken.
// Application-defined class that contains the owner-drawn data and
// virtual functions that operate on that data.
class MenuEntry
{
LPTSTR m_pName; // Displayed menu text or NULL for
// separator item.
int m_CmdID; // Menu command ID
int m_IconIndex; // Index of icon in bitmap or -1 for
// separator item
virtual void m_AnimateIcon();
virtual void m_ChangeIconColor();
}
// Application-defined struct that contains MSAAMENUINFO as first
// member. Second member points to owner-drawn data.
struct MenuInfo
{
MSAAMENUINFO m_MSAA; // MSAA info - must be first member
MenuEntry *pMenuData; // Points to the owner-drawn data
}
När du lägger till objekt i menyn skickar du en pekare till en instans av strukturen som innehåller MSAAMENUINFO för att exponera namnen på menyalternativen.