Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Deweloperzy aplikacji mogą używać struktury MSAAMENUINFO, aby uwidocznić nazwy elementów menu rysowanych przez właściciela. Kojarząc tę strukturę z danymi elementów menu renderowanych programowo, nie trzeba ujawniać elementów menu przy użyciu IAccessible.
Podczas tworzenia menu rysowanego przez właściciela zdefiniuj klasę lub strukturę danych elementu menu rysowanego przez właściciela i utwórz wystąpienia tej klasy dla każdego elementu menu. Przekaż wskaźnik do danych elementu podczas dodawania pozycji do menu.
Aby uwidocznić nazwy elementów menu, struktura MSAAMENUINFO musi być pierwszym elementem struktury definiującym dane elementów specyficznych dla aplikacji, jak pokazano w poniższym przykładzie:
// 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
};
Struktura MSAAMENUINFO nie może być składową w klasie zawierającej funkcje wirtualne. Po skompilowaniu kodu pierwszy element członkowski klasy jest zawsze wskaźnikiem generowanym przez kompilator do tabeli funkcji wirtualnych. Aby obejść ten problem, utwórz strukturę danych elementu zawierającą MSAAMENUINFO jako pierwszy element członkowski. Drugi człon jest wskaźnikiem do instancji klasy, która definiuje dane definiowane przez właściciela. W poniższym przykładzie pokazano tę technikę.
// 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
}
Podczas dodawania elementów do menu przekaż wskaźnik do wystąpienia struktury zawierającej MSAAMENUINFO, aby uwidocznić nazwy elementów menu.