Question

Je reçois un contrôleur de domaine pour le handle de fenêtre d'un objet dans un autre programme, à l'aide de win32gui.GetDC, qui renvoie un int / long. J'ai besoin d'insérer ce contrôleur de domaine dans un contrôleur de domaine mémoire en python. La seule chose que je n'arrive pas à comprendre, est d'obtenir un objet dérivé de wxDC de l'int / long renvoyé par win32gui. Aucun des objets wxDC ne me permet de leur transmettre un descripteur de domaine réel à partir de ce que je peux dire. Cela m'empêche bien sûr de faire mon blit. Y a-t-il un moyen de le faire?

Solution

J'ai téléchargé la source wxWidgets et fouillé, et je pense que cela fonctionnera.

Vous avez besoin de la poignée (HWND) de la fenêtre externe, pas du contrôleur de domaine.

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

Autres conseils

D'après ce que je peux dire, les contrôleurs de domaine en python sont abstraits en raison de la variation de la plate-forme. Ainsi, un contexte de périphérique dans Python ne mappe pas directement à un contexte de périphérique dans Windows, même si la plupart des méthodes sont des appels de méthodes Windows directs. Pour que cela se produise, il semble que vous deviez créer votre propre classe DelegateDC ou quelque chose de similaire, uniquement destiné à Windows, afin de pouvoir définir directement le descripteur de contrôleur de domaine.

Il pourrait également y avoir un moyen d’attacher une fenêtre wxWindow à la poignée de fenêtre, après quoi vous pourriez obtenir une page wxWindowDC à partir de la fenêtre wxWindow ... vous ne pouvez pas comprendre cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow