Вопрос

Я пишу приложение direct3d и, заметив странные ошибки, такие как сглаживание, возникающие даже тогда, когда оно отключено и указатель мыши не совпадает с объектами с такими же координатами, что и я, обнаружил, что при создании окна Параметры ширины и высоты включают границу. Программа рендерила графический вывод 800x600 в окно того же размера, но из-за границ оно было сжато в прямоугольник 792x566. Я увеличил размер окна, чтобы компенсировать это, но это не работает, если система использует стиль границы, отличный от стандартного стиля XP. (Классический стиль, например)

Есть ли способ определить ширину и высоту границ, прежде чем я создам окно?

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

Решение

Похоже, вы ищете функцию GetSystemMetrics. Например, ширина границы в пикселях возвращается

GetSystemMetrics(SM_CXBORDER)

ДОБАВЛЕНО . Для получения общего размера вам нужно сложить различные "кусочки" " области, не относящейся к клиенту: границы, размеры кадров, строки заголовка и т. д.

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

Другой вариант - убедиться, что размер поверхности D3D равен размеру прямоугольника клиента ( GetClientRect () ). Тогда вы будете знать, что будете рендериться до нужного размера, и вам не придется беспокоиться о ширине меню, границах и т. Д.

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