0

現在、アプリケーション内のサードパーティ コンポーネント (DevExpress) に関する問題を調査しています。私の問題は、この 1 つのDevExpress KB 記事とよく似ています。同じスタックトレースが少なくても同じ例外が発生します。そこで、.NET Reflector を使用して、このシナリオで何が null になる可能性があるかを調べました。null の候補となる唯一のオブジェクトは Graphics です。これは Graphics.FromHwnd(IntPtr.Zero) で作成されます。私はGDIについて幅広い知識を持っていないので、これがnullを返す可能性のあるシナリオを誰かが教えてくれるかどうか知りたいです...

Windows が GDI ハンドルの外にあるシナリオでそれを再現しようとしましたが、「ハンドル外」を取得しています - 少なくとも 1 回は例外です。これは、調査中の問題には当てはまりません。

ティア、マーティン

4

2 に答える 2

0

私の記憶では、0 の HWND (事実上 IntPtr.Zero) は、現在のユーザー セッションのデスクトップへのハンドルです。システムのさまざまなメトリックを測定するために使用でき、Graphics.FromHwnd の有効な値である必要があります。

ただし、GDI+ にはバグが多く、GDI+ との .NET 統合は非常に不安定であるため、GDI+ を使用しているだけで、コードや DevExpress に問題がない可能性が非常に高くなります。

于 2010-04-30T03:34:40.797 に答える
0

まず、IntPtr構造体を使用してゼロに初期化しています。次に、このハンドルを Graphics クラスに渡します。のウィンドウがない限りhandle == 0null値はまさに私が期待するものです。

于 2010-04-30T03:28:10.430 に答える