gpt4 book ai didi

c# - 将 .NET 结构与 WINAPI 函数结合使用

转载 作者:行者123 更新时间:2023-11-30 20:53:24 25 4
gpt4 key购买 nike

假设我想调用 GetWindowRect 函数。我虽然必须创建代表 RECT 的新结构,但这也有效:

[DllImport("user32.dll")]
public static extern bool GetWindowRect(System.IntPtr hWnd, out Rectangle lpRect);

矩形是 System.Drawing.Rectangle。尽管 RectangleRECT 的结构不同,但为什么这样做有效?

将来,我应该尽可能使用 .NET 结构(如 Rectange 和 Point),还是为每个 WinAPI 结构声明新的结构?

最佳答案

代码运行时,结构碰巧具有相同的大小。这与“有效”并不完全相同。 Windows RECT 结构与 .NET 矩形结构相同。 Windows 的 RECT 给出了 4 个边,.NET 使用一个点和一个尺寸,差别很大。

永远不要羞于声明您真正需要的类型。它是一个非常容易适合 SO 代码窗口的单行器,一个很好的衡量标准:

 struct RECT { public int Left, Top, Right, Bottom; }

一行代码应该永远让您寻找 hack :) 以防万一:不,不需要 [StructLayout]。 .NET 已经为结构类型自动生成一个。已经像发布的那样适合 fiddle 了。

关于c# - 将 .NET 结构与 WINAPI 函数结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20025525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com