Вопрос
Я пишу приложение direct3d и, заметив странные ошибки, такие как сглаживание, возникающие даже тогда, когда оно отключено и указатель мыши не совпадает с объектами с такими же координатами, что и я, обнаружил, что при создании окна Параметры ширины и высоты включают границу. Программа рендерила графический вывод 800x600 в окно того же размера, но из-за границ оно было сжато в прямоугольник 792x566. Я увеличил размер окна, чтобы компенсировать это, но это не работает, если система использует стиль границы, отличный от стандартного стиля XP. (Классический стиль, например)
Есть ли способ определить ширину и высоту границ, прежде чем я создам окно?
Решение
Похоже, вы ищете функцию GetSystemMetrics. Например, ширина границы в пикселях возвращается
GetSystemMetrics(SM_CXBORDER)
ДОБАВЛЕНО . Для получения общего размера вам нужно сложить различные "кусочки" " области, не относящейся к клиенту: границы, размеры кадров, строки заголовка и т. д.
Другие советы
Другой вариант - убедиться, что размер поверхности D3D равен размеру прямоугольника клиента ( GetClientRect () ). Тогда вы будете знать, что будете рендериться до нужного размера, и вам не придется беспокоиться о ширине меню, границах и т. Д.