首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WS_EX_LAYERED和SetParent()没有显示窗口

WS_EX_LAYERED和SetParent()没有显示窗口
EN

Stack Overflow用户
提问于 2021-11-01 02:20:03
回答 1查看 257关注 0票数 2

我有一个我解决不了的问题。我正在尝试从我的应用程序创建一个透明的窗口(使用标志WS_EX_TRANSPARENT | WS_EX_LAYERED)作为子窗口到另一个窗口,该窗口是不透明的。

当我不使用具有SetParent( my_window, target_parent_window )标志的my_window调用WS_EX_LAYERED时,新的子窗口将不可见。

我发现清单条目可以帮助我,因为从Windows8开始就支持带有标志WS_EX_LAYERED的子窗口,我尝试了,但没有成功。

代码语言:javascript
复制
::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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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调用之后,在此窗口的SetLayeredWindowAttributesUpdateLayeredWindow函数被调用之前,分层窗口将不可见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69792059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档