2008-09-26 3 views
2

Приложение мое рисует все свои границы и декорации. Он отлично работает с панелями задач Windows, которые настроены на автоматическое скрытие, за исключением случаев, когда максимальное окно приложения. Панель задач не будет «свертываться». Он будет вести себя нормально, если приложение не будет максимизировано, даже если оно будет полностью зависеть от нижней границы экрана. Он даже работает нормально, если я просто изменяю размер окна, чтобы отобразить весь экран (как если бы он был максимальным).Панель «Авто-Скрыть» не отображается, когда мое приложение максимально установлено.

ответ

3

Я нашел проблему. Мое приложение обрабатывало сообщение WM_GETMINMAXINFO и переопределяло значения в записи параметра MINMAXINFO. Значения, которые были в записи, были раздуты на 7 (ширина границы) разрешения экрана. Это имеет смысл в том, что при максимальном увеличении он выталкивает границы окна за пределы видимой части экрана. Он также устанавливает значение ptMaxPosition (укажите, что начало окна установлено, когда оно максимизировано) до -7, -7. Мое приложение установило это значение в 0,0, а максимальную высоту и ширину - ровно на размер разрешения экрана (не надутый). Не уверен, почему это было сделано; он был написан предшественником. Если я прокомментирую этот код и не изменяю структуру MINMAXINFO, работает Auto-hide.

Что касается причин, я не совсем уверен. Вполне возможно, что обнаружение для всплытия панели «autohidden» подключено к механизму обработки сообщений WM_MOUSEMOVE, а не для WM_NCMOUSEMOVE. Когда мое приложение заставляет максимизировать парковку моей границы прямо в нижней части экрана, я бы генерировал события WM_NCMOUSEMOVE; с MINMAXINFO, оставленным в покое, я бы генерировал WM_MOUSEMOVE.

0

Это зависит от того, проверяется ли «Сохранить панель задач поверх других окон» в свойствах панели задач. Если он установлен, появится панель задач.

Но не поддавайтесь программному изменению этого параметра на компьютере конечных пользователей только в соответствии с вашими потребностями, это считается грубой и плохой практикой. Ваше приложение должно соответствовать любой среде, в которую оно будет развернуто.