Pergunta

Estou recebendo um DC para um identificador de janela de um objeto em outro programa usando win32gui.GetDC que retorna um int / long. Eu preciso blit este DC em uma memória DC em python. A única coisa que eu não consigo descobrir como fazer é obter um wxDC derivado objeto a partir do int / tempo que win32gui retornos. Nenhum dos objetos wxDC me permita passar um punho real DC para eles do que eu posso dizer. Isto, obviamente, me impede de fazer o meu blit. Existe alguma maneira de fazer isso?

Foi útil?

Solução

Eu baixei a fonte wxWidgets e cavei ao redor, e eu acho que isso vai funcionar.

Você precisa do cabo (HWND) para a janela externa, não a DC.

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

Outras dicas

Do que eu posso dizer, DCs em python são abstraídos devido à variação plataforma. Então um contexto de dispositivo em python não mapeia diretamente para um contexto de dispositivo no Windows mesmo que muitos dos métodos são chamadas de método do Windows diretos. Para que isso aconteça, parece que você precisa fazer a sua própria classe DelegateDC ou algo semelhante que se destina apenas para Windows para que você possa definir o identificador DC diretamente.

Também pode haver alguma maneira de anexar um wxWindow para o identificador de janela após o qual você pode obter um wxWindowDC do wxWindow ... não pode descobrir isso embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top