http://bugs.winehq.org/show_bug.cgi?id=13683
--- Comment #30 from Erich Hoover erich.e.hoover@gmail.com --- (In reply to comment #29)
... Looking at the dumped resources, the game actually has dozens of different bitmaps depending on what the cursor is "holding" (the missing cursor is shaped like a hand that can drag items around).
What format is the bitmap data in? If it's not a cursor or icon then it is unlikely that the game is converting it into one before displaying it on the screen (unless Windows does this for you and I'm just not aware of it).
... 1091.390:trace:cursor:SetCursor (nil) ...
SetCursor on "(nil)" is going to disable the user32 cursor. This might be done because the application is switching over to drawing the cursor itself, or it might just do this when it stops using a cursor and before it sets the new cursor. If that's what it is doing (and the timing is screwed up in some way such that it occurs _after_ it sets the new cursor) then that might explain why your cursor disappears. You could test this by having SetCursor not actually do anything (thought it will obviously break other behaviors). It's worth noting that SetCursor returns the old cursor, so some applications use this behavior to "flip" between cursors.
... 1091.392:trace:cursor:LoadCursorA (nil), #7f00 ...
LoadIcon/LoadCursor on "(nil), <anything>" is not going to be an application cursor, this can _only_ be windows cursors. It is worth noting that in your full log you posted a little while ago that you have one LoadCursor call that it is not this way: $ cat output.txt | grep LoadCursor | grep -v '(nil)' trace:cursor:LoadCursorW 0x7edb0000, L""
It's unlikely that that is the cursor you're looking for if the game uses other cursors, but if you have only one cursor that is not working then it is possible (you only need to load the cursor once).