【问题标题】:What does IntPtr.Zero mean in System.Drawing.GraphicsSystem.Drawing.Graphics 中的 IntPtr.Zero 是什么意思
【发布时间】:2016-09-01 17:23:30
【问题描述】:

我需要在下面的函数中得到 IntPtr.Zero 的确切含义。 我使用此函数将 word 文档文本范围位置像素值转换为 WPF 单位值。

Graphics g = Graphics.FromHwnd(IntPtr.Zero)

这通常说通过句柄,但我没有得到它。

【问题讨论】:

    标签: c# .net winapi intptr word-addins


    【解决方案1】:

    Graphics.FromHwnd 方法用于从窗口的指定处理程序创建Graphics 对象。

    当您将IntPtr.Zero 作为参数传递时,您正在从Windows 桌面创建一个Graphics,允许您直接在屏幕上绘图。

    【讨论】:

      【解决方案2】:

      IntPtr 是一种特定于平台的方式来表示句柄或指针。在 32 位系统上,指针为 32 位宽,而在 64 位系统上,指针为 64 位宽。这种类型的存在是为了向您隐藏这些差异。

      IntPtr.Zero 表示一个句柄或指针,其值为 0(本质上为 null)。您可以在 API 需要 Windows API 样式句柄的地方使用它,例如在您的示例中的 FromHwnd 调用中。在 Windows API 中,HWND 是一个窗口句柄,其中 null 表示“无窗口”。要通过 C# 传递它,请使用 IntPtr.Zero

      【讨论】:

      • “在 Windows API 中,HWND 是一个窗口句柄,其中 null 表示“无窗口”。” - Windows API 中没有这样的约定。只要 HWND 参数是可选的,它就带有特定的语义。由于System.Graphics.Drawing 包装了 GDI+,它是根据 GDI 实现的,我假设这会检索代表整个屏幕的对象,尽管没有具体记录。
      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2011-04-18
      相关资源
      最近更新 更多