0

我已经构建了一个应用程序,它在 Windows 桌面应用程序的上下文中添加了屏幕上的应用程序帮助。当帮助对象与下拉菜单相关时,我遇到了添加透明覆盖时下拉菜单消失的问题。我应该使用哪些属性来保持下拉菜单可见?请参阅以下代码,其中我定义了要在当前前景窗口顶部绘制的窗口:

    exStyle = win32con.WS_EX_COMPOSITED | win32con.WS_EX_LAYERED | win32con.WS_EX_NOACTIVATE | win32con.WS_EX_TOPMOST | win32con.WS_EX_TRANSPARENT
    style = win32con.WS_DISABLED | win32con.WS_POPUP | win32con.WS_VISIBLE

    oWindow = win32gui.CreateWindowEx(
        exStyle,
        owndClassAtom,
        'Per52Overlay', # WindowName
        style,
        winX1, # x
        winY1, # y
        #win32api.GetSystemMetrics(win32con.SM_CXSCREEN), # width
        #win32api.GetSystemMetrics(win32con.SM_CYSCREEN), # height
        winWidth, #width
        winHeight, #height
        hwnd, # hWndParent
        None, # hMenu
        hInstance,
        None # lpParam
    )
    oWindowHndl = oWindow
    # //msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx
    win32gui.SetLayeredWindowAttributes(oWindow, 0x00ffffff, 255, win32con.LWA_COLORKEY | win32con.LWA_ALPHA)
    hdc, paintStruct = win32gui.BeginPaint(oWindow)
    hPen = win32gui.CreatePen(win32con.PS_SOLID,3, win32api.RGB(0,255,0))
    win32gui.SelectObject(hdc, hPen)
    win32gui.Rectangle(hdc, objX1, objY1, objX2, objY2)
    win32gui.EndPaint(oWindow, paintStruct)
    win32gui.SetWindowPos(oWindow, win32con.HWND_TOPMOST, winX1, winY1, winWidth, winHeight, win32con.SWP_DRAWFRAME | win32con.SWP_NOACTIVATE | win32con.SWP_NOSIZE | win32con.SWP_SHOWWINDOW)
    win32gui.ShowWindow(oWindow, win32con.SW_SHOW)
    win32gui.UpdateWindow(oWindow)

在某个阶段,应绘制窗口:

winCrd = win32gui.GetWindowRect(activeWindow)
objCrd = (startX, startY, endX, endY)
drawOnApp(activeWindow, winCrd, objCrd, message)
win32gui.BringWindowToTop(activeWindow)

我的猜测是我在属性上做错了什么,以及应该在顶部/激活/到前景等的窗口等等。

你能给我一些线索,让我更深入地研究这个问题吗?

4

0 回答 0