質問

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

役に立ちましたか?

解決

wxWidgetsのソースをダウンロードして掘り下げたところ、うまくいくと思います。

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

window = wx.Frame(None, -1, '')
window.AssociateHandle(hwnd)
dc = wx.WindowDC(window)

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top