WTL: Um bestimmte Befehle in bestimmten Befehlshandlern zu verarbeiten
-
27-10-2019 - |
Frage
Ich bin ein neues in WTL.
Eine der Klassen eines Projekts, an dem ich arbeite, ist die WTL -GUI -Klasse. Die Nachrichtenkarte enthält einen Datensatz:
COMMAND_CODE_HANDLER(0, OnMenuClick)
OnMenuClick
Griff alle WM_COMMAND
's werden nach dem Menüklick gesendet. Gibt es Möglichkeiten, einen weiteren Befehlshandler für bestimmte Nachrichten festzulegen? OnMenuClick
Verarbeitet alle anderen?
Ich habe das versucht:
COMMAND_ID_HANDLER(ID_START_TASK, OnStartTask);
COMMAND_CODE_HANDLER(0, OnMenuClick)
Es klappt, OnStartTask
Prozesse ID_START_TASK
Befehle, aber es hängt von der Erklärung der Erklärung ab. Wenn ich die Strings -Deklarationsreihenfolge ändere, OnMenuClick
Prozesse ID_START_TASK
Befehle.
Ich benutze gegen 2008 + WTL 8.0
Lösung
Aus Command_handler:
Die Nachrichtenkarte setzt bandiert auf true, bevor Befehlshänder aufgerufen wird. Wenn CommandHandler die Nachricht nicht vollständig verarbeitet, sollte sie auf False festgelegt werden, um anzugeben, dass die Nachricht weiter verarbeitet werden muss.
WTL ruft Handler an, solange keiner von ihnen signalisierte, dass sie die Nachricht behandelten. Wenn der Handler nicht explizit auf false fest setzt, übergibt WTL die Nachricht nicht an den nächsten Handler.