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