我可以从 Windows RECT 结构访问宽度和高度而不计算它吗?

Posted

技术标签:

【中文标题】我可以从 Windows RECT 结构访问宽度和高度而不计算它吗?【英文标题】:Can I access the width and height from a Windows RECT struct without calculating it? 【发布时间】:2019-07-22 04:28:45 【问题描述】:

在将指向RECT 结构的指针传递给AdjustWindowRect() 之后,Windows 会为我填写lefttoprightbottom 字段。我可以很容易地从字段中计算出我需要的宽度和高度,但我在 Visual Studio 调试器中注意到了一些东西。在 Watch 窗口的 Value 列中,RECT 变量 (AdjustedWindowRect) 的值显示了一组我不习惯使用的字段(LT & RB,我假设这意味着左侧/top & right/bottom) 并在末尾用大括号显示宽度和高度。这只是调试器的一个功能,还是我可以从结构中访问宽度和高度值而无需在代码中进行计算?

【问题讨论】:

调试器显示的宽度和高度由调试器计算 另外,通过查看您提供的链接中的声明,struct 是一个 C structtypedefRECT*PRECT,因此不可能有一个 LT 未由 API 公开的私有成员。 可能是 Visual Studio 调试器扩展。 【参考方案1】:

你不能。它由调试器格式化。具体来说,请参阅此 XML:

<Type Name="tagRECT">
    <AlternativeType Name="CRect"></AlternativeType>
    <DisplayString>LT(left, top) RB(right, bottom)  [right-left x bottom-top]</DisplayString>
</Type>

该代码来自windows.natvis 文件,在我的电脑上它位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Packages\Debugger\Visualizers\

顺便说一句,您可以轻松地为自己的类型添加自定义可视化工具,编写类似的 *.natvis 文件,包含在项目中,IDE 将使用它进行调试。

【讨论】:

非常详细的答案。在我的系统上找到该文件。谢谢。

以上是关于我可以从 Windows RECT 结构访问宽度和高度而不计算它吗?的主要内容,如果未能解决你的问题,请参考以下文章

rect函数定义是啥?

CRect类

CRect类 的介绍

转:CRect类 的介绍

在fabricjs中更改Rect的边框宽度

Raphael JS 中的 Rect 在所有边上的笔画宽度不同