Non è possibile, poiché qualsiasi azione eseguita dall'utente si traduce nell'inserimento di un nuovo messaggio nella coda dell'applicazione che verrà gestito solo al termine di quello corrente, WM_TIMER, che ha dato luogo all'esecuzione del "tick" del timer.

Devi usare i thread.