Domanda

Ricevo un controller di dominio per un handle di finestra di un oggetto in un altro programma usando win32gui.GetDC che restituisce un int / long. Devo inserire questo controller di dominio in un controller di memoria in Python. L'unica cosa che non riesco a capire come fare è ottenere un oggetto derivato da wxDC dall'int / long che restituisce win32gui. Nessuno degli oggetti wxDC mi consente di passare loro un vero handle DC da quello che posso dire. Questo ovviamente mi impedisce di fare la mia benedizione. C'è un modo per farlo?

È stato utile?

Soluzione

Ho scaricato l'origine wxWidgets e ho scavato, e penso che funzionerà.

È necessario l'handle (HWND) per la finestra esterna, non per il controller di dominio.

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

Altri suggerimenti

Da quello che posso dire, i controller di dominio in Python sono astratti a causa della variazione della piattaforma. Quindi un contesto di dispositivo in Python non si associa direttamente a un contesto di dispositivo in Windows anche se molti dei metodi sono chiamate di metodo dirette di Windows. Per far sì che ciò accada, è necessario creare la propria classe DelegateDC o qualcosa di simile destinato esclusivamente a Windows, in modo da poter impostare direttamente l'handle DC.

Potrebbe esserci anche un modo per collegare una finestra wx alla maniglia della finestra dopo la quale è possibile ottenere un wxWindowDC dalla finestra wx ... non è possibile capirlo però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top