Python Win32:使用带有HBITMAP的SelectObject时出错



我试图选择具有HBITMAP的DC,但我似乎得到了一个错误。我使用Pywin32的Win32函数以及ctypes的VirtualAlloc函数。

data = VirtualAlloc(0, (x*y+x)*512,MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE)
hbm = CreateBitmap(x,y,1,32,data)
SelectObject(hdcdc, hbm)

下面是代码执行时发生的错误:

Traceback (most recent call last):
File "...", line 32, in <module>
SelectObject(hdcdc, hbm)
TypeError: The object is not a PyHANDLE object

谢谢你的帮助!

你应该调用CreateDCFromHandle来创建一个DC对象,然后使用它的SelectObject方法。

dc_hwnd = win32gui.GetWindowDC(desk_hwnd)
desk_dc = win32ui.CreateDCFromHandle(dc_hwnd)
pen = win32ui.CreatePen(win32con.PS_SOLID, 10, win32api.RGB(255, 0, 0))
old_pen = desk_dc.SelectObject(pen)