Share via


ModifyMenuW-Funktion (winuser.h)

Ändert ein vorhandenes Menüelement. Diese Funktion wird verwendet, um den Inhalt, die Darstellung und das Verhalten des Menüelements anzugeben.

Hinweis Die ModifyMenu-Funktion wurde durch die SetMenuItemInfo-Funktion ersetzt. Sie können ModifyMenu jedoch weiterhin verwenden, wenn Sie keine der erweiterten Features von SetMenuItemInfo benötigen.
 

Syntax

BOOL ModifyMenuW(
  [in]           HMENU    hMnu,
  [in]           UINT     uPosition,
  [in]           UINT     uFlags,
  [in]           UINT_PTR uIDNewItem,
  [in, optional] LPCWSTR  lpNewItem
);

Parameter

[in] hMnu

Typ: HMENU

Ein Handle für das zu ändernde Menü.

[in] uPosition

Typ: UINT

Das zu ändernde Menüelement, wie durch den uFlags-Parameter bestimmt.

[in] uFlags

Typ: UINT

Steuert die Interpretation des uPosition-Parameters sowie den Inhalt, die Darstellung und das Verhalten des Menüelements. Dieser Parameter muss einen der folgenden erforderlichen Werte enthalten.

Wert Bedeutung
MF_BYCOMMAND
0x00000000L
Gibt an, dass der uPosition-Parameter den Bezeichner des Menüelements angibt. Das MF_BYCOMMAND-Flag ist die Standardeinstellung, wenn weder das MF_BYCOMMAND noch MF_BYPOSITION-Flag angegeben ist.
MF_BYPOSITION
0x00000400L
Gibt an, dass der uPosition-Parameter die nullbasierte relative Position des Menüelements angibt.
 

Der Parameter muss auch mindestens einen der folgenden Werte enthalten.

Wert Bedeutung
MF_BITMAP
0x00000004L
Verwendet eine Bitmap als Menüelement. Der lpNewItem-Parameter enthält ein Handle für die Bitmap.
MF_CHECKED
0x00000008L
Setzt ein Häkchen neben dem Element. Wenn Ihre Anwendung Bitmaps zum Häkchen bereitstellt (siehe die Funktion SetMenuItemBitmaps ), zeigt dieses Flag eine ausgewählte Bitmap neben dem Menüelement an.
MF_DISABLED
0x00000002L
Deaktiviert das Menüelement, sodass es nicht ausgewählt werden kann, aber dieses Flag nicht graut.
MF_ENABLED
0x00000000L
Aktiviert das Menüelement, sodass es ausgewählt werden kann, und stellt es aus dem abgegrauten Zustand wieder her.
MF_GRAYED
0x00000001L
Deaktiviert das Menüelement und graut es, sodass es nicht ausgewählt werden kann.
MF_MENUBARBREAK
0x00000020L
Funktioniert genauso wie das MF_MENUBREAK-Flag für eine Menüleiste. Bei einem Dropdownmenü, Untermenü oder Kontextmenü wird die neue Spalte durch eine vertikale Linie von der alten Spalte getrennt.
MF_MENUBREAK
0x00000040L
Platziert das Element in einer neuen Zeile (für Menüleisten) oder in einer neuen Spalte (für ein Dropdownmenü, Untermenü oder Kontextmenü), ohne Spalten zu trennen.
MF_OWNERDRAW
0x00000100L
Gibt an, dass es sich bei dem Element um ein vom Besitzer gezeichnetes Element handelt. Bevor das Menü zum ersten Mal angezeigt wird, erhält das Fenster, das das Menü besitzt, eine WM_MEASUREITEM Meldung, um die Breite und Höhe des Menüelements abzurufen. Die WM_DRAWITEM Nachricht wird dann an die Fensterprozedur des Besitzerfensters gesendet, wenn die Darstellung des Menüelements aktualisiert werden muss.
MF_POPUP
0x00000010L
Gibt an, dass das Menüelement ein Dropdownmenü oder Untermenü öffnet. Der uIDNewItem-Parameter gibt ein Handle für das Dropdownmenü oder untermenü an. Dieses Flag wird verwendet, um einen Menünamen zu einer Menüleiste oder einem Menüelement hinzuzufügen, das ein Untermenü zu einem Dropdownmenü, Untermenü oder Kontextmenü öffnet.
MF_SEPARATOR
0x000000800L
Zeichnet eine horizontale Trennlinie. Dieses Flag wird nur in einem Dropdownmenü, Untermenü oder Kontextmenü verwendet. Die Zeile kann nicht abgeblendet, deaktiviert oder hervorgehoben werden. Die Parameter lpNewItem und uIDNewItem werden ignoriert.
MF_STRING
0x00000000L
Gibt an, dass das Menüelement eine Textzeichenfolge ist. der lpNewItem-Parameter ist ein Zeiger auf die Zeichenfolge.
MF_UNCHECKED
0x00000000L
Setzt kein Häkchen neben dem Element (Standard). Wenn Ihre Anwendung Bitmaps zum Häkchen bereitstellt (siehe Die Funktion SetMenuItemBitmaps ), zeigt dieses Flag eine klare Bitmap neben dem Menüelement an.

[in] uIDNewItem

Typ: UINT_PTR

Der Bezeichner des geänderten Menüelements oder, wenn für den uFlags-Parameter das MF_POPUP Flag festgelegt ist, ein Handle zum Dropdownmenü oder Untermenü.

[in, optional] lpNewItem

Typ: LPCTSTR

Der Inhalt des geänderten Menüelements. Die Interpretation dieses Parameters hängt davon ab, ob der uFlags-Parameter das flag MF_BITMAP, MF_OWNERDRAW oder MF_STRING enthält.

Wert Bedeutung
MF_BITMAP
0x00000004L
Ein Bitmaphandle.
MF_OWNERDRAW
0x00000100L
Ein von einer Anwendung bereitgestellter Wert, der verwendet wird, um zusätzliche Daten im Zusammenhang mit dem Menüelement zu verwalten. Der Wert befindet sich im elementData-Element der Struktur, auf das vom lParam-Parameter des WM_MEASUREITEM oder WM_DRAWITEM Nachrichten gesendet wird, die gesendet werden, wenn das Menüelement erstellt oder seine Darstellung aktualisiert wird.
MF_STRING
0x00000000L
Ein Zeiger auf eine null-beendete Zeichenfolge (Standard).

Rückgabewert

Typ: BOOL

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn ModifyMenu ein Menüelement ersetzt, das ein Dropdown- oder Untermenü öffnet, zerstört die Funktion das alte Dropdownmenü oder untermenü und gibt den von ihr verwendeten Arbeitsspeicher frei.

Damit Tastaturbeschleunigungen mit Bitmap- oder von Besitzern gezeichneten Menüelementen funktionieren, muss der Besitzer des Menüs die WM_MENUCHAR Nachricht verarbeiten. Weitere Informationen finden Sie unter Vom Besitzer gezeichnete Menüs und die WM_MENUCHAR Nachricht .

Die Anwendung muss die DrawMenuBar-Funktion aufrufen, wenn sich ein Menü ändert, unabhängig davon, ob sich das Menü in einem angezeigten Fenster befindet. Um die Attribute vorhandener Menüelemente zu ändern, ist es viel schneller, die Funktionen CheckMenuItem und EnableMenuItem zu verwenden.

Die folgenden Flaggruppen können nicht zusammen verwendet werden:

  • MF_BYCOMMAND und MF_BYPOSITION
  • MF_DISABLED, MF_ENABLED und MF_GRAYED
  • MF_BITMAP, MF_STRING, MF_OWNERDRAW und MF_SEPARATOR
  • MF_MENUBARBREAK und MF_MENUBREAK
  • MF_CHECKED und MF_UNCHECKED

Beispiele

Ein Beispiel finden Sie unter Festlegen von Schriftarten für Menu-Item Textzeichenfolgen.

Hinweis

Der winuser.h-Header definiert ModifyMenu als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-menu-l1-1-3 (eingeführt in Windows 10, Version 10.0.14393)

Weitere Informationen

AppendMenu

CheckMenuItem

Konzept

DrawMenuBar

EnableMenuItem

Menüs

Referenz

SetMenuItemBitmaps

SetMenuItemInfo