2009/3/18 Vincent Povirk madewokherd+8cd9@gmail.com:
On Wed, Mar 18, 2009 at 9:39 AM, Nicolas Le Cam niko.lecam@gmail.com wrote:
I don't think calling SHAppBarMessage with ABM_REMOVE destroy the window and the ABN_POSCHANGED notification is catched between this call and the DestroyWindow one. But this particular behaviour only happens on Win2k and perhaps previous windows versions (should be tested) not on XP and later ones, that's why I wanted to keep your approach and mark this particular behaviour as broken (even if I didn't use the right approach as noticed by Paul) to force wine to behave like recent windows versions
Wine DOES send a notification to all other appbars when one appbar is removed. However, Wine's SHAppBarMessage will never processes messages in the queue, nor will DestroyWindow.
I really think you're getting the notification from destroying appbar2, and you just happen to be getting it late. Windows' implementation does have a tendency to send us late messages.
The failure does not indicate that Wine is behaving more like winxp than win2k. It doesn't tell us anything helpful at all, as the details are something no real app should ever rely on. Nor is it a broken way to implement this API.
I think this case should pass even on Wine.
Vincent Povirk
Message notification comes from appbar3, I've checked hwnd handles. When calling last ABM_REMOVE there's no more appbars so Wine shouldn't send any notifications, if it does the broken macro (that will come with try2) will catch that.