【发布时间】:2016-09-01 17:23:30
【问题描述】:
我需要在下面的函数中得到 IntPtr.Zero 的确切含义。 我使用此函数将 word 文档文本范围位置像素值转换为 WPF 单位值。
Graphics g = Graphics.FromHwnd(IntPtr.Zero)
这通常说通过句柄,但我没有得到它。
【问题讨论】:
标签: c# .net winapi intptr word-addins
我需要在下面的函数中得到 IntPtr.Zero 的确切含义。 我使用此函数将 word 文档文本范围位置像素值转换为 WPF 单位值。
Graphics g = Graphics.FromHwnd(IntPtr.Zero)
这通常说通过句柄,但我没有得到它。
【问题讨论】:
标签: c# .net winapi intptr word-addins
Graphics.FromHwnd 方法用于从窗口的指定处理程序创建Graphics 对象。
当您将IntPtr.Zero 作为参数传递时,您正在从Windows 桌面创建一个Graphics,允许您直接在屏幕上绘图。
【讨论】:
IntPtr 是一种特定于平台的方式来表示句柄或指针。在 32 位系统上,指针为 32 位宽,而在 64 位系统上,指针为 64 位宽。这种类型的存在是为了向您隐藏这些差异。
IntPtr.Zero 表示一个句柄或指针,其值为 0(本质上为 null)。您可以在 API 需要 Windows API 样式句柄的地方使用它,例如在您的示例中的 FromHwnd 调用中。在 Windows API 中,HWND 是一个窗口句柄,其中 null 表示“无窗口”。要通过 C# 传递它,请使用 IntPtr.Zero。
【讨论】:
HWND 参数是可选的,它就带有特定的语义。由于System.Graphics.Drawing 包装了 GDI+,它是根据 GDI 实现的,我假设这会检索代表整个屏幕的对象,尽管没有具体记录。