Вопрос

Я получаю DC для дескриптора окна объекта в другой программе, использующей win32gui.GetDC, которая возвращает int / long. Мне нужно вставить этот DC в DC памяти в python. Единственное, что я не могу понять, как это сделать, это получить производный от wxDC объект из int / long, который возвращает win32gui. Ни один из объектов wxDC не позволяет мне передать фактический дескриптор DC из того, что я могу сказать. Это, конечно, мешает мне делать мой блядь. Есть ли способ сделать это?

Это было полезно?

Решение

Я скачал исходный код wxWidgets и покопался, и я думаю, что это сработает.

Вам нужен дескриптор (HWND) для внешнего окна, а не DC.

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

Другие советы

Из того, что я могу сказать, контроллеры домена в python абстрагируются из-за изменения платформы. Таким образом, контекст устройства в python напрямую не сопоставляется с контекстом устройства в Windows, хотя многие из методов являются прямыми вызовами методов Windows. Чтобы это произошло, кажется, вам нужно создать собственный класс DelegateDC или нечто подобное, предназначенное только для Windows, чтобы вы могли напрямую установить дескриптор DC.

Также может быть какой-то способ прикрепить wxWindow к дескриптору окна, после чего вы можете получить wxWindowDC из wxWindow ... хотя это не получается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top