In Window$ timers were created with a specified callback and thus they don't need a hWnd at all.
While it is true that a timer can use a callback instead of a window, however both approaches still require the owning thread to have a message queue and dispatch messages. A WM_TIMER message is always generated when the timer elapses, but if there is no window associated with the timer then dispatching the message with DispatchMessage() will invoke the callback.
Did I claim anything different?
- In a Win GUI App DispatchMessage() will be invoked by TApplication.ProcessMessages --> WidgetSet.AppProcessMessages
- A TTimer doesn't need an Owner in order to work
- There is no hidden window for receiving timer messages
I have already listed the call path for user32 SetTimer, it is always called with hWnd=0. The params that reach that call are only the interval and the callback. Of course there is a list of TWin32Timerinfo's but they hold only a timer ID and a procedure of object.
I don't know what the subject of the dispute is, it's all written in the code.