我构建了一个应用程序,可以在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)
我的猜测是,我正在对属性做错,结合应该在顶部/激活/到前景等的窗口等。
你可以给我一些线索,让你在这件事上更多地潜水吗?