sjk2lq 2019-11-13 22:59 采纳率: 0%
浏览 304

求救!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()
  • 写回答

2条回答

  • 泡视界 2019-11-14 09:56
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog