Ширина и высота границы окна - PullRequest
1 голос
/ 19 ноября 2008

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

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

Ответы [ 2 ]

3 голосов
/ 19 ноября 2008

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

2 голосов
/ 19 ноября 2008

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

GetSystemMetrics(SM_CXBORDER)

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

...