Aero лежит около положения окна. Это сверхпрочная функция приложения-компата, границы окон имеют одинаковую ширину в течение очень долгого времени. Это не было устойчивым, во время Vista становилось важным не создавать границы окна шириной в один пиксель. Технологии мониторов развиваются: дисплей с разрешением 1600 x 900 (мой ноутбук) не является чем-то необычным. Перемещение курсора мыши на моей клавиатуре, чтобы поразить этот пиксель, чтобы сделать окно более широким, наверняка, это.
Таким образом, большой целью дизайна в Vista было создание окон с красивыми жирными границами. Легко ударить мой коврик для мыши.
Это создало неприятную проблему совместимости приложений, хотя много программного обеспечения создает окно с CreateWindows / Ex (), которое задает вне размера окна. Клиентская зона плюс границы. Наличие жирных рамок теперь является проблемой, оно не увеличивает окно, оно делает клиентскую область меньше . Не хорошо, клиентская область - это та, которая считается, когда вы заполняете окно контентом и / или элементами управления. Есть несколько программ gazillion, которые ожидают иметь клиентскую область определенного размера из заданного внешнего размера окна. Обрезанные элементы управления и полосы прокрутки (если вам повезет) будут безудержными.
Единственное разумное, что могут сделать программисты Vista, это сохранить размер клиента и расширить окно за запрошенные границы. Без приложения, просящего об этом. И если его подделать, когда приложение запросит , GetClientRect () вызовет.
Исправление такого поведения возможно, вы должны сообщить Vista, что вам известно о его поведении. К сожалению, это не доступно в настройках проекта C ++. Вы должны запустить editbin.exe / subsystem, чтобы сказать, что вы совместимы с 6,0 в событии после сборки. Побочным эффектом является то, что он не будет работать на XP и более ранних версиях. То, что это не очевидный вариант, очень и очень небрежно.