玻璃效果的子窗口

vision66 2013-05-02 10:45:48
我想做一个窗口(Popup/Overlapped/child), 它能盖在视频播放窗口上, 却不挡住视频内容, 能在上面用鼠标画图, 却不影响视频画面. 就像是盖在电视屏幕上的玻璃那样. 这种怎么整呢
...全文
203 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
善良超锅锅 2013-05-03
  • 打赏
  • 举报
回复
我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景[/quote] LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思[/quote] 我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了[/quote] 1、看一下调用SetLayeredWindowAttributes时窗口句柄是否正确 2、看一下你子窗体的风格中是否包含WS_EX_LAYERED,如果不设置的话,是无法透明的。 引用MSDN:SetLayeredWindowAttributes的第一个参数 hwnd [in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created. [/quote] 上面两行代码设置了相应属性吧?用GetSafeHwnd()的到的窗口句柄怎么会不正确呢?
_静以修身 2013-05-03
  • 打赏
  • 举报
回复
引用 7 楼 shimachao 的回复:
[quote=引用 6 楼 lossed1990 的回复:] [quote=引用 5 楼 shimachao 的回复:] [quote=引用 4 楼 lossed1990 的回复:] [quote=引用 3 楼 huayu608 的回复:] 这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
重新创建一个窗体,设置透明度,覆盖在视频界面上[/quote] 我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景[/quote] LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思[/quote] 我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了[/quote] 1、看一下调用SetLayeredWindowAttributes时窗口句柄是否正确 2、看一下你子窗体的风格中是否包含WS_EX_LAYERED,如果不设置的话,是无法透明的。 引用MSDN:SetLayeredWindowAttributes的第一个参数 hwnd [in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.
善良超锅锅 2013-05-03
  • 打赏
  • 举报
回复
引用 6 楼 lossed1990 的回复:
[quote=引用 5 楼 shimachao 的回复:] [quote=引用 4 楼 lossed1990 的回复:] [quote=引用 3 楼 huayu608 的回复:] 这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
重新创建一个窗体,设置透明度,覆盖在视频界面上[/quote] 我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景[/quote] LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思[/quote] 我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了
_静以修身 2013-05-03
  • 打赏
  • 举报
回复
引用 5 楼 shimachao 的回复:
[quote=引用 4 楼 lossed1990 的回复:] [quote=引用 3 楼 huayu608 的回复:] 这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
重新创建一个窗体,设置透明度,覆盖在视频界面上[/quote] 我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景[/quote] LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思
善良超锅锅 2013-05-03
  • 打赏
  • 举报
回复
引用 4 楼 lossed1990 的回复:
[quote=引用 3 楼 huayu608 的回复:] 这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
重新创建一个窗体,设置透明度,覆盖在视频界面上[/quote] 我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景
vision66 2013-05-02
  • 打赏
  • 举报
回复
这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
liuli7786 2013-05-02
  • 打赏
  • 举报
回复
可以把数值20调大些,调成100,效果会好些。
liuli7786 2013-05-02
  • 打赏
  • 举报
回复
窗口半透明,不行吗? 在主窗体的OnInitDialog()函数中添加: SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED); ::SetLayeredWindowAttributes(GetSafeHwnd(),0,20,LWA_ALPHA);
_静以修身 2013-05-02
  • 打赏
  • 举报
回复
引用 3 楼 huayu608 的回复:
这个好像是把整个窗口调成透明了, 连画出来的图案也透明了
重新创建一个窗体,设置透明度,覆盖在视频界面上

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧