我目前正在用python制作一个游戏覆盖图(在屏幕上绘制一个文本)。 在这里,我使用pywin32创建了一个不可见的全屏窗口。 我的问题是,我创建了一个窗口,并将消息注入一个新线程。你知道吗
def run_overlay_thread():
thr = threading.Thread(target=game_overlay.main, args=())
thr.setDaemon(True)
#thr.setDaemon(False)
thr.start()
所以当我这样调用RedrawWindow函数时:
win32gui.RedrawWindow(hWindow, None, None, win32con.RDW_INVALIDATE | win32con.RDW_ERASE)
什么都没有发生(没有触发WM\U PAINT消息)。你知道吗
def wndProc(hWnd, message, wParam, lParam):
print('called with message:{}'.format(message))
if message == win32con.WM_PAINT:
hdc, paintStruct = win32gui.BeginPaint(hWnd)
... more draw code ...
创建窗口时会触发一次WM\u PAINT消息,因此我可以看到显示的文本,但无法更新文本。 我必须在新线程中调用PumpMessages,因为我想运行应用程序其他部分(例如gui或“backend”)的init代码
有人知道怎么解决这个问题吗? 任何帮助都将不胜感激! 对不起,我的英语不好:)
通过使用invalidate而不是RedrawWindow修复了此问题。 我的新代码:
相关问题 更多 >
编程相关推荐