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 信息?你需要说明白一点啊

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站