Здесь есть несколько проблем. Вы не хотите использовать жестко запрограммированное значение, например (0,0). Это может быть даже не видно в системе с несколькими мониторами Как вы обнаружили, вы должны стараться не перекрывать панель задач или другие панели приложений. Если имеется несколько мониторов, попробуйте запустить их на том мониторе, с которым пользователь недавно взаимодействовал.
Есть простой способ сделать это бесплатно. Передайте CW_USEDEFAULT
как x
и y
координаты при вызове CreateWindow
. Это позволит оконному менеджеру выполнить тяжелую работу, чтобы ваше окно появилось в разумном месте.
Вы можете заставить систему сообщать вам координаты рабочей области. Рабочая область - это та часть рабочего стола, которая не содержит панели задач или других панелей приложений. Звоните SystemParametersInfo
, проходя SPI_GETWORKAREA
.
Извлекает размер рабочей области на главном мониторе монитора. Рабочая область - это часть экрана, не скрытая системной панелью задач или панелями инструментов рабочего стола приложения. Параметр pvParam должен указывать на структуру RECT
, которая получает координаты рабочей области, выраженные в координатах виртуального экрана.
Чтобы получить рабочую область монитора, отличного от основного монитора, вызовите функцию GetMonitorInfo
.