我有一个我解决不了的问题。我正在尝试从我的应用程序创建一个透明的窗口(使用标志WS_EX_TRANSPARENT | WS_EX_LAYERED)作为子窗口到另一个窗口,该窗口是不透明的。
当我不使用具有SetParent( my_window, target_parent_window )标志的my_window调用WS_EX_LAYERED时,新的子窗口将不可见。
我发现清单条目可以帮助我,因为从Windows8开始就支持带有标志WS_EX_LAYERED的子窗口,我尝试了,但没有成功。
::SetWindowLongW( process_window, GWL_STYLE, WS_CLIPSIBLINGS | WS_POPUP | WS_VISIBLE );
::SetWindowLongW( process_window, GWL_EXSTYLE, WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW );
::SetWindowPos( process_window, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
::ShowWindow( process_window, SW_SHOW );
::SetParent( process_window, new_parent_window); // if i skip this call the window will render perfectly发布于 2021-11-01 03:44:29
https://learn.microsoft.com/en-us/windows/win32/winmsg/window-features
若要创建分层窗口,请在调用
函数时指定
WS_EX_LAYERED扩展窗口样式,或在创建窗口后调用SetWindowLong函数设置WS_EX_LAYERED。在CreateWindowEx调用之后,在此窗口的SetLayeredWindowAttributes或UpdateLayeredWindow函数被调用之前,分层窗口将不可见。
https://stackoverflow.com/questions/69792059
复制相似问题