Gelöst habe ich das mit dem Befehl Multitask, alternativ kann Wait verwendet werden. Multitask als Minuswert im Argument berücksichtigt die ESC-Taste als Abbruchkriterium.
Code: Alles auswählen
// Wait(nPoll*100,waitMouseAndKeyboard)
Multitask(-nPoll*100)
Code: Alles auswählen
Multitask()
IF KeyPressed(kpEscape,False) THEN
STC_NoName1 = "Esc pressed"
BREAK
END
Jetzt kommt das 2. Problem: Das Wait wartet. Ohne Unterbrechung! Das Ergebnis: Der User drückt Escape und für die Dauer der Wartezeit passiert nichts, was unschön ist. Möglicherweise ist dies ein Fehler in Windev. Allerdings wird in der Hilfe auch darauf verwiesen, die Wartezeiten möglichst kurz zu halten. Eventuell weiss jemand, womit man dieses Problem umgehen könnte?
Ich habe momentan im Loop zwei Wait mit je der halben Zeit eingebaut.
Nun kommt das 3. Problem: Wenn der User das Programm schliesst, verschwindet das Fenster und alles ist zu - nein! Um die noch verbleibende Wartezeit des noch aktiven Threads bleibt die Task im Taskmanager sichtbar.