Graphics.FromHwnd(IntPtr.Zero)返回null,为什么?

时间:2009-03-10 08:57:18

标签: .net winforms gdi devexpress

我正在调查我的应用程序中第三方组件(DevExpress)的问题。 我的问题非常类似于DevExpress KB article。我得到相同的异常与更少相同的堆栈跟踪。 所以我使用.NET Reflector来查找,在这种情况下可能为null,并且唯一一个空白的对象是Graphics。 这是使用Graphics.FromHwnd(IntPtr.Zero)创建的。因为我对GDI没有广泛的了解,所以我想知道是否有人可以告诉我可能会返回null的情况......

我尝试在Windows没有GDI句柄的情况下重现它,但后来我得到了一个“没有句柄” - 至少一次异常,这不是我正在调查的问题中的情况< / p>

TIA, 马丁

2 个答案:

答案 0 :(得分:0)

首先,您正在使用IntPtr结构并将其初始化为零。然后,您将此句柄传递给Graphics类。除非您有一个handle == 0的窗口,否则null值正是我所期望的。

答案 1 :(得分:0)

据我所知,HWND为0(实际上是IntPtr.Zero)是当前用户会话桌面的句柄。它可以用来衡量系统的各种指标,它应该是Graphics.FromHwnd的有效值。

然而,GDI +充满了错误,.NET与它的集成非常不稳定,除了使用GDI +之外,你的代码或DevExpress很可能没有错。