Frage

Ich bin ein DC für einen Fenstergriff eines Objekts in einem anderen Programm bekommen win32gui.GetDC verwendet, die ein int / long zurückgibt. Ich brauche diese DC in einen Speicher DC in Python blitten. Das einzige, was ich nicht verstehen kann, wie zu tun ist, ein wxDC abgeleitete Objekt aus dem int get / lang, dass win32gui zurückkehrt. Keiner der wxDC Objekte erlauben Sie mir einen tatsächlichen DC Griff zu ihnen passieren, was ich sagen kann. Dies natürlich hält mich von meinem blit tun. Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Ich habe die wxWidgets Quelle und wühlte, und ich denke, das wird funktionieren.

Sie müssen den Griff (HWND) für das externe Fenster, nicht die DC.

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

Andere Tipps

Von dem, was ich sagen kann, DCs in Python abstrahiert aufgrund Plattform Variation. So ein Gerätekontext in Python Karte nicht direkt zu einem Gerätekontext in Windows, obwohl viele der Methoden direkte Windows-Methodenaufrufe sind. Um dies zu ermöglichen es scheint, müssen Sie Ihre eigene DelegateDC Klasse oder etwas ähnliches machen, die nur für Windows gedacht ist, so dass Sie die DC einstellen könnten Griff direkt an.

Es könnte auch eine Möglichkeit geben, eine wxWindow an den Fenstergriff zu befestigen, nach dem Sie eine wxWindowDC vom wxWindow bekommen konnten ... kann dies allerdings nicht herausgefunden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top