我正在使用win32gui.GetDC获取另一个程序中对象的窗口句柄的DC,它返回一个int / long。我需要将此DC插入到python中的内存DC中。我唯一无法弄清楚如何做的是从win32gui返回的int / long中获取一个wxDC派生对象。 wxDC对象中没有一个允许我从我能告诉的内容中将实际的DC句柄传递给它们。这当然阻止我做我的快乐。有没有办法做到这一点?

有帮助吗?

解决方案

我下载了wxWidgets源码并进行挖掘,我认为这样可行。

您需要外部窗口的句柄(HWND),而不是DC。

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

其他提示

据我所知,python中的DC由于平台变化而被抽象化。因此,即使许多方法是直接的Windows方法调用,python中的设备上下文也不会直接映射到Windows中的设备上下文。为了实现这一点,您似乎需要创建自己的DelegateDC类或类似于Windows的类似的东西,以便您可以直接设置DC句柄。

可能还有某种方法可以将wxWindow附加到窗口句柄,之后你可以从wxWindow获取一个wxWindowDC ...但是无法解决这个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top