我可以从 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 会为我填写left
、top
、right
和bottom
字段。我可以很容易地从字段中计算出我需要的宽度和高度,但我在 Visual Studio 调试器中注意到了一些东西。在 Watch 窗口的 Value 列中,RECT
变量 (AdjustedWindowRect
) 的值显示了一组我不习惯使用的字段(LT
& RB
,我假设这意味着左侧/top & right/bottom) 并在末尾用大括号显示宽度和高度。这只是调试器的一个功能,还是我可以从结构中访问宽度和高度值而无需在代码中进行计算?
【问题讨论】:
调试器显示的宽度和高度由调试器计算。 另外,通过查看您提供的链接中的声明,struct
是一个 C struct
与 typedef
到 RECT
和 *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 结构访问宽度和高度而不计算它吗?的主要内容,如果未能解决你的问题,请参考以下文章