2009-03-10 18 views
0

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

WindowsがGDIから外れているシナリオで再現しようとしましたハンドルが、その後、私は「ハンドルの外」を取得しています - 私は

TIAを調査しています問題ではそうではありません少なくとも一度の例外、 マーティン

+0

あなたは正確に何をしようとしていますか?デスクトップに描画しますか?デスクトップをキャプチャしますか?何? –

+0

いいえ、Graphics.FromHwndへの呼び出しは、DevExpressコードに深く埋め込まれています。この呼び出しがnullを返すように間違ったことを見つけようとしています。その後、DevExpressコントロールはそのオブジェクトに依存するため、NullReferenceExceptionが発生しています。 –

答えて

0

私が思い起こせば、HWNDが0(実質的にIntPtr.Zero)は、現在のユーザーセッションのデスクトップのハンドルです。これは、システムのさまざまなメトリックを測定するために使用でき、Graphics.FromHwndの有効な値でなければなりません。

しかし、GDI +にはバグがたくさんあり、.NETとの統合は非常に不安定です.GDI +を使用する以外は、コードやDevExpressに問題はありません。

0

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

関連する問題