EnableMenuItem() nutzt nichts... Was nun?
-
Hallo zusammen.
Ich habe mich hier mal durch die Suchfunktion geschleust, aber keinen Beitrag gefunden, der meinem Problem hilft.
Ich habe ein Menü, dessen Menüpunkte ich derzeit mit EnableMenuItem() deaktiviere.
Jedoch sollen nicht die einzelnen Menüeinträge (wie "Datei" -> "Beenden") sondern das Menü selbst ("Datei") deaktiviert werden.
Wie kriege ich das hin? Kann mir da jemand helfen?
Vielen Dank.
Alex
-
Hallo Edward,
evtl hilft dir MENUITEMINFO weiter. Schau mal in der MSDN,
in Verbindung mit MFS_GRAYED (Disables the menu item and grays it so that it cannot be selected)Gruß
Chris
-
Hallo Chris.
Ich benutze derzeit die Funktion EnableMenuItem() so:
pMenue->EnableMenuItem(IDM_VORGANGSERFASSUNG_NEU, MF_GRAYED); pMenue->EnableMenuItem(IDM_VORGANGSERFASSUNG_SPEICHERN, MF_GRAYED);
Allerdings kann ich so kein Menü selbst (wie z.B. das Menü "Datei") deaktivieren, da diese keine Resourcen - ID haben...
Das MENUITEMINFO hilft nicht wirklich weiter, da ich für die Methoden GetMenuItemInfo und SetMenuItemInfo ebenfalls die Resourcen - ID eines MenuItems brauche...
Gruß,
Edward
-
Du musst dazu das Popupmenü zu einem einfachen Menüeintrag machen, der eine ID besitzt!
-
Wenn ich die PopUp - Eigenschaft des Menüs wegnehme, verschwinden auch die Menüeinträge darin... Und das ist (ich formulier's mal vorsichtig) ungewollt...
-
Moment, jetzt mal vom logischen her ...
Wenn ein PopupMenu deaktiviert ist, nützen mir doch auch die Einträge nix, oder seh ich das falsch?
Und was hindert Dich daran, beim Setzen des Popup-Stils das Menü wieder mit den richtigen Items zu füllen?
-
Der Aufwand.
Ich habe aber schon einen Tipp bekommen, wie sich das Ganze weniger aufwändig erledigen lässt.
Trotzdem danke für deine Hilfe.
-
WIe wärs, den Tip zu posten?
-
pMenue->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
Das
MF_DISABLED
kann auch weggelassen werden.
Allerdings wird so das Menü noch vertieft dargestellt, wenn es angeklickt wird...
-
Zur Erklärung:
pMenue->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
Die 1 bezeichnet die Position des gewünschten Menüs (auf 0 basierend).
MF_BYPOSITION
gibt an, dass die Item - Auswahl an Hand der Position erfolgen soll (so wird keine ID benötigt).
MF_DISABLED
deaktiviert das Menü / den Menüpunkt aber stellt es nicht grau dar!
MF_GRAYED
deaktiviert das Menü / den Menüpunkt ebenfalls und stellt ihn grau dar.
-
Ist ok, so hätte ich es auch versucht. Da ich allerdings noch nie ein komplettes Submenü deaktiviert habe, dachte ich, es sei allgemein nicht mit EnableMenuItem möglich!
-
Dachte ich auch. Deshalb habe ich ja so energisch gefragt, da die Klasse CMenu eine passendere Funktion nicht bereitstellte...