来自 win32gui.GetDC 的 wxPython wxDC 对象

发布于 2024-07-08 05:04:38 字数 216 浏览 7 评论 0原文

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

I am getting a DC for a window handle of an object in another program using win32gui.GetDC which returns an int/long. I need to blit this DC into a memory DC in python. The only thing I can't figure out how to do is get a wxDC derived object from the int/long that win32gui returns. None of the wxDC objects allow me to pass an actual DC handle to them from what I can tell. This of course keeps me from doing my blit. Is there any way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花想c 2024-07-15 05:04:38

我下载了 wxWidgets 源代码并进行了研究,我认为这会起作用。

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

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

I downloaded the wxWidgets source and dug around, and I think this will work.

You need the handle (HWND) for the external window, not the DC.

window = wx.Frame(None, -1, '')
window.AssociateHandle(hwnd)
dc = wx.WindowDC(window)
许久 2024-07-15 05:04:38

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

可能还有一些方法可以将 wxWindow 附加到窗口句柄,然后您可以从 wxWindow 获取 wxWindowDC...但无法弄清楚这一点。

From what I can tell, DCs in python are abstracted due to platform variation. So a device context in python doesn't directly map to a device context in Windows even though many of the methods are direct Windows method calls. To make this happen it appears you would need to make your own DelegateDC class or something similar that is intended just for Windows so that you could set the DC handle directly.

There might also be some way to attach a wxWindow to the window handle after which you could get a wxWindowDC from the wxWindow...can't figure this out though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文