I'm currently trying to port an old 16-bit DOS program to Windows full screen in 800x600 mode. When starting from 640x480 mode and switching to 800x600 within the program with the ChangeDisplaySettings function, the Windows task bar gets in the work area unless I create the window with the EX_TOPMOST style. But then I have no access to the task bar.

I've been trying to relocate the task bar with the SHAppBarMessage function without any success. I got the task bar handle with the ABM_GETAUTOHIDEBAR parameter and inserted it in the APPBARDATA struc. Using the ABM_GETTASKBARPOS parameter, I can get the current position of the task bar (although the top left horizontal value is returned as 0FEFFFFFFh, other data being seemingly correct). Modifying that data for the 800x600 mode and calling the function with the ABM_SETPOS parameter has been ineffective.

The task bar refuses to move regardless of what I try with the SHAppBarMessage function. Any suggestion on which other function would be effective???

Any help will be appreciated

Posted on 2003-12-08 20:28:33 by Raymond
Hi Raymond,

From the way I read it the docs say "ABM_SETPOS Sets the size and screen position of an appbar. " but Windows definitely distinguishes between an AppBar and the TaskBar:

An application desktop toolbar(also called an appbar) is a window that is similar to the Microsoft? Windows? taskbar.

Are you sure that you can set the "TaskBar" position using the AppBar message ? I know you can use the SHAppBarMessage message to get the position of the TaskBar but I thought that was only to allow you to properly position your AppBar so it would not be obscured. I have a feeling that you are not using the right function, I will try to find an interface that explicitly says it is for the task bar.

BTW: testing this is annoying. Now my screen has a 28 pixel border around it and I am trying to find a way to reset it :) You can use the SystemParametersInfo to set the works area of the screen but that doesn't seem to move the taskbar, just sort of reserves space for it.
Posted on 2003-12-09 09:39:20 by donkey