Diese Frage wurde schon einmal gestellt, aber die Nicht-Antwort lautet: „Nun, es liegt an jeder Anwendung, ob sie unterschiedliche Optionen unterstützt.“ Wenn Sie jedoch mit der rechten Maustaste auf eine Auswahl im Editor, einem Browser oder was auch immer klicken, erstellt Something ein Kontextmenü. Wie macht eine App das? Warum kann ich nichts hinzufügen? Wie fügt man dem Kontextmenü der Hervorhebung etwas hinzu? Keine Antwort ist besser als eine Nicht-Antwort.
Antwort1
Kurze Antwort: Wenn Sie einen neuen Menüpunkt hinzugefügt haben,das Programm wüsste nicht, was zu tun ist, wenn auf das Element geklickt wird.Sie müssen tatsächlich den Programmcode ändern, damit neue Menüelemente etwas tun. Aus diesem Grund ist „Das hängt von jeder Anwendung ab“ eine gültige Antwort.
Wie die meisten anderen Betriebssysteme stellt Windows eine Reihe von Funktionen zum Erstellen von GUI-Programmen bereit. Einige davon sind Teil des Systems („Erstellen Sie ein Fenster“), andere dienen hauptsächlich der Benutzerfreundlichkeit („Zeichnen Sie eine Schaltfläche, die angeklickt werden kann“).
Die meisten Programme zeigen ihre Menüs (normale und Kontextmenüs) mithilfe dieser Funktionen an. Grundsätzlich erhalten Windows dadurch eine Liste mit Elementen und müssen diese in Form eines Menüs auf dem Bildschirm anzeigen und das Programm über Ihre Auswahl informieren.
Woher die Liste der Elemente stammt, ist Windows ziemlich egal. Einige Menüs werden vom Programm selbst generiert (z. B. die Liste „Zuletzt verwendete Dateien“). Sie können diese nicht ändern, ohne den Teil des Programms, der die Liste der zuletzt verwendeten Dateien erstellt, neu zu schreiben. Andere Menüs, wie das Menü „Datei“, „Bearbeiten“ oder „Hilfe“ in Notepad, werden aus einer „Ressource“ erstellt, die in der .exe
Datei selbst gespeichert ist. Es gibt Tools zum Bearbeiten solcher Ressourcen (z. B. zum Neuanordnen von Menüelementen oder zum Ändern des Programmsymbols).
Wenn Sie jedoch ein solches Tool verwenden, um neue Menüelemente hinzuzufügen, funktionieren diese nicht, da das Programmwüsste nicht, was ich tun soll. Jedem Menüpunkt ist keine Magie zugeordnet, sondern nur eine einzelne Zahl, eine „Befehls-ID“. „Kopieren“, das in vielen Programmen üblich ist, hat beispielsweise die Befehls-ID 12 („IDM_COPY“) zugewiesen, und etwas, das für ein einzelnes Programm spezifisch ist (wie „Neues Spiel“), könnte 1234 oder 2468 oder etwas anderes haben. Wenn Sie ein Kontextmenü öffnen und auf „Kopieren“ klicken, teilt Windows Notepad nur mit, dass „Befehls-ID 12 ausgewählt wurde“, und es liegt an Notepad, ausgewählten Text tatsächlich in die Zwischenablage zu kopieren, wenn dies geschieht.
- Ausschneiden → ID 11 → Notepad fügt Text in die Zwischenablage ein und löscht ihn dann aus dem Dokument
- Kopieren → ID 12 → Notepad legt Text in die Zwischenablage
- Einfügen → ID 13 → Der Editor holt den Text aus der Zwischenablage und fügt ihn in das Dokument ein
- Singen → ID 12 → Notepad legt Text in die Zwischenablage
- Erneut kopieren → ID 3456 → Der Editor tut nichts, da er keine Ahnung hat, was ID 3456 bedeuten soll
Randbemerkung: Das Obige ist etwas vereinfacht. Das Kontextmenü in Notepad wird tatsächlich durch das Steuerelement „Bearbeitbarer Text“ implementiert, das Teil der oben genannten Dienstprogrammfunktionen von Windows ist. Das Hauptmenü ist jedoch vollständig Teil von Notepad.
Randbemerkung: Einige Programme, normalerweise solche, die mit Skins oder Themen versehen werden können, zeichnen tatsächlich verschiedene Steuerelemente selbst – was nicht besonders schwierig ist, da ein Popup-Menü nur ein Fenster ohne Titelleiste ist. Obwohl ich den Code solcher Programme selbst nicht gesehen habe, glaube ich nicht, dass sich die Details wesentlich ändern würden.