Once upon a time one could use WM_TIMER to execute an arbitrary callback in the gui thread. Then some fucking asshole decided that it was unacceptable, and implemented a the cursed function known as ValidateTimerCallback. Now only callbacks that came from real timers are permitted. Seriously, fuck you. If there is a god then he will send you straight to hell for what you have done.