2

int/long を返す win32gui.GetDC を使用して、別のプログラムでオブジェクトのウィンドウ ハンドルの DC を取得しています。この DC を Python のメモリ DC にブリットする必要があります。どうすればよいか分からない唯一のことは、win32gui が返す int/long から wxDC 派生オブジェクトを取得することです。wxDC オブジェクトのどれも、私が知る限り、実際の DC ハンドルをそれらに渡すことを許可していません。もちろん、これにより、ブリットを行うことができなくなります。これを行う方法はありますか?

4

2 に答える 2

1

wxWidgets のソースをダウンロードしていろいろ調べてみたところ、うまくいくと思います。

DC ではなく、外部ウィンドウのハンドル (HWND) が必要です。

window = wx.Frame(None, -1, '')
window.AssociateHandle(hwnd)
dc = wx.WindowDC(window)
于 2009-11-30T17:25:33.347 に答える
0

私が知る限り、Python の DC はプラットフォームのバリエーションにより抽象化されています。そのため、Python のデバイス コンテキストは、多くのメソッドが Windows メソッドの直接呼び出しであっても、Windows のデバイス コンテキストに直接マップされません。これを実現するには、DCハンドルを直接設定できるように、独自のDelegateDCクラスまたはWindows専用の同様のものを作成する必要があるようです。

また、wxWindow をウィンドウ ハンドルにアタッチしてから、wxWindow から wxWindowDC を取得する方法もあるかもしれませんが、これを理解することはできません。

于 2008-10-31T15:22:29.363 に答える