sjk2lq
sjk2lq
采纳率0%
2019-11-13 22:59 阅读 235

求救!python3 pywin32 创建窗体没有 WM_CREATE 信息!

求救!python3 pywin32 创建窗体没有 WM_CREATE 信息!

def createPropertyWin(hWndParent = None):

    def wndProc(hWnd, message, wParam, lParam):
        print(message)
        if message == win32con.WM_PAINT:
            print("WM_PAINT")
            hdc, paintStruct = win32gui.BeginPaint(hWnd)
            dpiScale = win32ui.GetDeviceCaps(hdc, win32con.LOGPIXELSX) / 60.0
            fontSize = 80
            lf = win32gui.LOGFONT()
            lf.lfFaceName = "Times New Roman"
            lf.lfHeight = int(round(dpiScale * fontSize))
            hf = win32gui.CreateFontIndirect(lf)
            win32gui.SelectObject(hdc, hf)
            rect = win32gui.GetClientRect(hWnd)
            win32gui.DrawText(
                hdc, '测试', -1, rect,
                win32con.DT_CENTER | win32con.DT_NOCLIP | win32con.DT_SINGLELINE | win32con.DT_VCENTER
            )
            win32gui.EndPaint(hWnd, paintStruct)
            return 0
        elif message == win32con.WM_CREATE:
            print("WM_CREATE")
            return 0
        else:
            return win32gui.DefWindowProc(hWnd, message, wParam, lParam)

    hInstance = win32api.GetModuleHandle()
    className = 'MyCreatePropertyWin'
    wndClass = win32gui.WNDCLASS()
    wndClass.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW | win32con.CS_DBLCLKS
    wndClass.lpfnWndProc = wndProc
    wndClass.hInstance = hInstance
    wndClass.hCursor = win32gui.LoadCursor(None, win32con.IDC_ARROW)
    wndClass.hbrBackground = win32gui.GetStockObject(win32con.WHITE_BRUSH)
    wndClass.lpszClassName = className
    wndClassAtom = win32gui.RegisterClass(wndClass)
    exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_CLIENTEDGE
    style = win32con.WS_OVERLAPPEDWINDOW | win32con.CW_USEDEFAULT
    hWindow = win32gui.CreateWindowEx(
        exStyle,
        wndClassAtom,
        "属性",
        style,
        0, 0,
        300, 500, hWndParent,
        None, hInstance, None
    )
    win32gui.ShowWindow(hWindow, win32con.SW_SHOWNORMAL)
    win32gui.UpdateWindow(hWindow)
    win32gui.PumpMessages()
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • weixin_42910064 泡视界 2019-11-14 09:56

    我没看懂你的问题是什么,啥叫没有WM_CREATE 信息?
    window创建窗体的机制是注册窗体,初始化窗体,设置窗体消息回调函数,最后显示窗体。
    WM_CREATE 是窗体的消息,就是message。由事件出发。在窗口初始创建过程中,将发出WM_CREATE消息给回调函数。然后尽心窗口的建立。
    你是哪一步没有WM_CREATE 信息?你需要说明白一点啊

    点赞 评论 复制链接分享

相关推荐