新线程中的PumpMessages

2024-09-26 18:14:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用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代码

有人知道怎么解决这个问题吗? 任何帮助都将不胜感激! 对不起,我的英语不好:)


Tags: 文本none消息messagedef线程paintwm

热门问题