Menu - loop of sending and receiving WM_TIMER

Alexandre Julliard julliard at winehq.org
Thu Apr 14 08:53:15 CDT 2005


Jose Alonso <alonso at estadao.com.br> writes:

>         for (;;)
>         {
> (1)         if (PeekMessageW( &msg, 0, 0, 0, PM_NOREMOVE ))
>         ...
>         {
> (2)          DispatchMessageW( &msg );
>         }
>         if (!fEndMenu) fRemove = TRUE;
> 
>         /* finally remove message from the queue */
> 
>         if (fRemove && !(mt.trackFlags & TF_SKIPREMOVE) )
> (3)       PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE );
>         else mt.trackFlags &= ~TF_SKIPREMOVE;
>     }
> 
> (1) The WM_TIMER is peeked and the timer is not restarted (PM_NOREMOVE)
> (2) The WM_TIMER is dispatched here
> (3) The WM_TIMER is only removed from the queue.
> The next PeekMessageW (1) return immediately with WM_TIMER since the
> timer was not restarted.

The timer was restarted in (3), so I'd expect things to work right.
There must be something else going on here.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list