Installing Zoo Tycoon problem (another one)

Duane Clark dclark at
Sun Mar 21 10:42:19 CST 2004

pvriens at wrote:
> ...
> The caller of x11drv.MsgWaitForMultipleObjectsEx seems to be 
> user32.PeekMessageA.
> The first thing that PeekMessageA/W does is check for graphic events:
>     /* check for graphics events */
>     if (USER_Driver.pMsgWaitForMultipleObjectsEx)
>         USER_Driver.pMsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
> But does this realy retrieve all messages as the parameter 3 and 4 would
> suggest (wMsgFilterMin and wMsgFilterMax being 0).

I'm not sure where you got wMsgFilterMin and wMsgFilterMax from. 
Parameters 3 and 4 are milliseconds and wakemask:

The call to MsgWaitForMultipleObjectsEx with all zeroes is not intended 
to return messages. Instead, it is basically a way to tell the Wine 
server to check for and get pending events. How the event buffering 
works is a bit over my head, but I think it is something like this.

The call to MsgWaitForMultipleObjectsEx checks for pending events (such 
as X events). Since no filters were used, all events are checked and 
stored in Wine's server. The return from the call to 
MsgWaitForMultipleObjectsEx simply indicates whether there are any 
messages now stored in the Wine server. If there are, then the function 
"Peeks" at them to get one of them, and immediately handles certain 
message types (such as WM_PAINT).

More information about the wine-users mailing list