wxPython wxDC 对象来自 win32gui.GetDC

Posted

技术标签:

【中文标题】wxPython wxDC 对象来自 win32gui.GetDC【英文标题】:wxPython wxDC object from win32gui.GetDC 【发布时间】:2008-10-28 18:35:06 【问题描述】:

我正在使用返回 int/long 的 win32gui.GetDC 获取另一个程序中对象的窗口句柄的 DC。我需要将这个 DC 插入 python 中的内存 DC。我唯一不知道该怎么做的是从 win32gui 返回的 int/long 中获取 wxDC 派生对象。据我所知,没有一个 wxDC 对象允许我将实际的 DC 句柄传递给它们。这当然使我无法做我的小动作。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

我下载了 wxWidgets 源并四处挖掘,我认为这会起作用。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我最近需要做类似的事情并得出了相同的结论,但我只花了几个小时,所以我仍然希望有办法。

以上是关于wxPython wxDC 对象来自 win32gui.GetDC的主要内容,如果未能解决你的问题,请参考以下文章

wxpython的安装

GUI wxPython

wxPython 检查对象是不是存在

wxPython事件处理

wxPython:事件处理一

如何在 wxPython 中跨多个监视器创建框架?