我正在编写一个direct3d应用程序,并注意到奇怪的错误,例如抗锯齿,即使它被关闭,鼠标指针没有排列到具有相同坐标的东西,我发现在创建窗口时width和height参数包括边框。该程序将800x600图形输出渲染到相同大小的窗口,但由于边界,它被压缩成792x566矩形。我已经增加了窗口的大小来补偿,但是如果系统使用标准XP风格的边框样式,这不起作用。 (例如经典风格)
在创建窗口之前,有没有办法告诉边框宽度和高度是多少?
答案 0 :(得分:3)
另一个选择是确保D3D表面与客户端矩形大小(GetClientRect())的大小相同。然后你知道你将渲染到合适的大小,而不必担心菜单,边框等的宽度。
答案 1 :(得分:2)
听起来您正在寻找GetSystemMetrics功能。例如,以像素为单位的边框宽度由
返回GetSystemMetrics(SM_CXBORDER)
已添加:对于总尺寸,您需要将非客户区的各个“部分”加在一起:边框,框架尺寸,标题栏等。