Windows窗口背景透明的几种方法 您所在的位置:网站首页 windows透明窗口实现方式 Windows窗口背景透明的几种方法

Windows窗口背景透明的几种方法

2024-07-15 20:33| 来源: 网络整理| 查看: 265

Windows窗口背景透明的几种方法 原创

johnLuo 2009-06-11 16:17:26 ©著作权

文章标签 职场 休闲 文章分类 运维

©著作权归作者所有:来自51CTO博客作者johnLuo的原创作品,请联系作者获取转载授权,否则将追究法律责任 做一个项目,需要用到窗口透明,把我学习到的几种方法罗列一下:   1,响应WM_CTLCOLOR消息,在消息函数内,如果需要获取窗口的Brush句柄,返回一个空句柄。     这个方法能够实现窗口的背景透明,但是不能设置alpha值,也就是说,没办法做到半透的效果。 2,调用SetWindowRgn函数,可以得到一个不规则形状窗口,把需要透明的窗口部分去掉。    这个方法说起来不算是真正的窗口透明,但是可以用来创建一个非规则的窗口应用程序。 3,重载窗口的OnCreate函数,设置扩展属性: int CWhiteBoardDlg::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CDialog::OnCreate(lpCreateStruct) == -1)  return -1;  DWORD exStyle = ::GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE); exStyle |= WS_EX_LAYERED; ::SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, exStyle); ::SetLayeredWindowAttributes(this->GetSafeHwnd(), RGB(0, 0, 0), 50, LWA_COLORKEY);  // TODO:  在此添加您专用的创建代码  return 0;}   SetLayeredWindowAttributes函数的最后一个参数,可以指明为Alpha透明。这样可以设置半透的效果。   第三个方法的问题是,整个窗口包括背景和前景都会有alpha效果,有时候只需要背景透明,而前景色保持不变,需要结合第1,3种方法才行。 收藏 评论 分享 举报

上一篇:算不上BUG

下一篇:让 InkCanvas 支持 Multitouch



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有