From: Eric B. <ebo...@li...> - 2001-11-10 15:14:11
|
> I stll have an empty entry in windows taskbar for each allegro application > I exited. Is there a fix planned for this ? I guess that's related to a few other minor problems Allegro has with the Windows desktop (and especially the taskbar and other topmost windows). Here's how I understand the situation: - normal Windows applications usually create their main window very shortly after they have started up, even inside their WinMain entry point function (besides the Platform SDK explicitly recommands that). Some others first display a "splash" window and then proceed with the main window creation. On exit, they clean up everything and finally destroy the main window. All this business is conducted within the same thread, namely the primary thread that owns the primary (main) window. - Allegro works differently: in order to hide the complexity of Windows programming (message processing), the primary thread doesn't create any window, but instead creates a second thread (the window thread) that creates the window. Hence on exit, the window and the window thread are first destroyed, and only then the main thread can terminate. Now the problem: when an application gets started, its main thread is put on the foreground (that means a slightly higher priority) by the system and the window it creates is put on the foreground too (top of the Z order). On exit, the foreground property is returned to its previous owner. But with Allegro, the window thread creates the window, not the main one, and it is not in the foreground at startup. This proves to be mostly working (with at least one trick though), except that this seems to totally mess up the Z order of windows: topmost windows ("sticky on top" windows) may sometimes popup over a fullscreen DirectX screen (that has exclusive access to the screen), taskbars sometimes too. Moreover, on exit the "focus" (actually the foreground property) may not be returned to the right window, but to the first (in the Z queue) topmost one, often the taskbar. It looks like you have found another effect of this underlying problem (it doesn't occur on my box though). Up to now we have no fix/workaround and the only one I can think of (creating a fake window in the main thread) won't go in the upcoming 4.0 release. Any other suggestion is welcome. -- Eric Botcazou ebo...@mu... |