2008-11-19 2 views
1

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

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

ответ

2

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

GetSystemMetrics(SM_CXBORDER) 

ADDED: Для полного размера вам нужно будет сложить различные «кусочки» из области не-клиента: границы, размеры кадра, название баров и т. д.

+0

Вам понадобится больше, если вы создадите окно в зависимости от того, есть ли у вас меню/подписи/и т.д.. Поэтому убедитесь, что вы обслуживаете эти случаи, а также SM_CXBORDER. – 2008-11-19 00:20:06

3

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

Смежные вопросы