In welchem Fall wird Update_Command_UI ausgeführt statt Command_UI?



  • Ich möchte Schaltfläche deaktivieren, wenn z. B. das Dateiende erreicht ist.
    Wenn ich auf die Schaltfläche (im Toolbar) klicke, wird Command_UI ausgeführt.
    Ich weiß aber nichtz in welchem Fall Update_Command_UI ausgeführt wird.
    Danke für Eure Hilfe
    frenchcancan



  • Hallo,

    das steht doch alles in der Hilfe:

    MSDN schrieb:

    Nehmen Sie an, der Benutzer klickt mit der Maus in das Menü Datei, dann wird daraufhin eine WM_INITMENUPOPUP-Nachricht erzeugt. Der Aktualisierungsmechanismus des Anwendungsgerüsts aktualisiert vor dem Öffnen des Menüs alle Befehle im Menü Datei gemeinsam, die der Benutzer dann sehen kann.

    Um dies durchzuführen, leitet das Anwendungsgerüst die Aktualisierungsbefehle für alle Menübefehle aus dem Kontextmenü über den Standard-Befehlsleitweg. Befehlsziele auf dem Weg haben die Möglichkeit, jeden Menübefehl zu aktualisieren. Dies geschieht durch den Vergleich des Aktualisierungsbefehls mit einem geeigneten Eintrag der Nachrichtenzuordnung (des Formats ON_UPDATE_COMMAND_UI) und dem Aufruf einer Aktualisierungs-Behandlungsfunktion. Auf diese Weise werden für ein Menü mit sechs Menübefehlen sechs Aktualisierungsbefehle versendet. Wenn eine Aktualisierungs-Behandlungsroutine für die Befehls-ID des Menübefehls existiert, wird sie aufgerufen, um die Aktualisierung durchzuführen. Ist dies nicht der Fall, überprüft das Anwendungsgerüst, ob eine Behandlungsroutine für diese Befehls-ID existiert, und aktiviert bzw. deaktiviert den Menüeintrag gegebenenfalls.

    Findet das Anwendungsgerüst während der Befehlsweiterleitung keinen ON_UPDATE_COMMAND_UI-Eintrag, aktiviert es automatisch das Benutzeroberflächenobjekt, wenn an beliebiger Stelle ein ON_COMMAND-Eintrag mit derselben Befehls-ID existiert. Andernfalls wird das Benutzeroberflächenobjekt deaktiviert. Deshalb sollte entweder eine Behandlungsroutine für den Befehl, den das Objekt generiert, oder eine Aktualisierungs-Behandlungsroutine eingerichtet werden, um sicherzustellen, daß ein Benutzeroberflächenobjekt aktiviert ist. Betrachten Sie dazu die Abbildung zum Thema Benutzeroberflächenobjekte und Befehls-IDs.

    [...]

    Die Initialisierung der Menüs erfolgt im Anwendungsgerüst automatisch, wenn die Anwendung eine WM_INITMENUPOPUP-Nachricht empfängt. Während der Warteschleife sucht das Anwendungsgerüst beim Weiterleiten von Befehlen in nahezu derselben Weise nach Aktualisierungs-Behandlungsroutinen von Schaltflächen, wie dies bei Menüs erfolgt.

    MfG



  • Wer lesen kann, ist im Vorteil. Ich hatte die Erklärungen nicht gefunden. danke!


Anmelden zum Antworten