2008-10-28 66 views
2

我在使用win32gui.GetDC返回一個int/long的另一個程序中獲得一個對象的窗口句柄的DC。我需要將這個DC輸入到python的內存DC中。我唯一不知道如何做的是從win32gui返回的int/long中獲取一個wxDC派生的對象。從我所知道的情況來看,沒有一個wxDC對象允許我將實際的DC句柄傳遞給它們。這當然使我無法完成我的任務。有沒有辦法做到這一點?來自win32gui.GetDC的wxPython wxDC對象

回答

1

我下載了wxWidgets源代碼並挖了一遍,我認爲這會起作用。

您需要外部窗口的句柄(HWND),而不是DC。

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

從我所知道的來看,python中的DC是由於平臺變化而被抽象化的。因此,python中的設備上下文並不直接映射到Windows中的設備上下文,即使許多方法是直接的Windows方法調用。爲了做到這一點,看起來你需要製作屬於你自己的DelegateDC類或類似的東西,它只是爲了Windows,所以你可以直接設置DC句柄。

也可能有某種方法可以將wxWindow附加到窗口句柄,然後您可以從wxWindow獲取wxWindowDC ...但無法弄清楚這一點。

+0

我最近需要做類似的事情,並得出同樣的結論,但我只花了幾個小時,所以我仍然希望有一種方法。 – FogleBird 2009-11-30 14:22:51