Автоматическое скрытие панели задач, не появляющейся при максимальном использовании моего приложения

StackOverflow https://stackoverflow.com/questions/137005

  •  02-07-2019
  •  | 
  •  

Вопрос

Мое приложение отрисовывает все свои собственные границы окон и их оформление.Это прекрасно работает с панелями задач Windows, для которых установлено автоматическое скрытие, за исключением случаев, когда окно моего приложения развернуто.Панель задач не будет "сворачиваться".Он будет вести себя нормально, если у меня приложение не развернуто, даже если оно расположено в нижней части экрана.Это даже работает нормально, если я просто изменяю размер окна, чтобы оно занимало весь дисплей (как если бы оно было развернуто).

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top