Остановить окно приложения, перекрывающее панель запуска Windows - PullRequest
3 голосов
/ 02 октября 2011

На моем ПК с Win7 у меня вертикальная панель запуска, ширина которой составляет около 60 пикселей.В моем приложении win32 созданное окно всегда отображается поверх стартовой панели, что выглядит плохо - я просто использую (0,0) в качестве верхней левой позиции окна.

Как мне это сделать, чтобыполучить (0,0) относительно рабочего стола, принимая во внимание Стартовую панель?Есть ли флаг или мне нужно вручную искать метрику?

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Здесь есть несколько проблем. Вы не хотите использовать жестко запрограммированное значение, например (0,0). Это может быть даже не видно в системе с несколькими мониторами Как вы обнаружили, вы должны стараться не перекрывать панель задач или другие панели приложений. Если имеется несколько мониторов, попробуйте запустить их на том мониторе, с которым пользователь недавно взаимодействовал.

Есть простой способ сделать это бесплатно. Передайте CW_USEDEFAULT как x и y координаты при вызове CreateWindow. Это позволит оконному менеджеру выполнить тяжелую работу, чтобы ваше окно появилось в разумном месте.


Вы можете заставить систему сообщать вам координаты рабочей области. Рабочая область - это та часть рабочего стола, которая не содержит панели задач или других панелей приложений. Звоните SystemParametersInfo, проходя SPI_GETWORKAREA.

Извлекает размер рабочей области на главном мониторе монитора. Рабочая область - это часть экрана, не скрытая системной панелью задач или панелями инструментов рабочего стола приложения. Параметр pvParam должен указывать на структуру RECT, которая получает координаты рабочей области, выраженные в координатах виртуального экрана. Чтобы получить рабочую область монитора, отличного от основного монитора, вызовите функцию GetMonitorInfo.

2 голосов
/ 03 октября 2011

Использование SetWindowPlacement. (0,0) для этой функции исключает панель задач и любые другие панели приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...