参考 https://blog.csdn.net/u011430225/article/details/48470373

描述: 根据MSDN所述,子窗口的半透属性是跟随父窗口的。也就是说在子窗口中用SetLayeredWindowAttributes方法完成透明是不可行的。 如果子窗口设置成overlap或者popup格式,虽然可用SetLayeredWindowAttributes实现半透,但是该窗口跟主窗口的关系往往无法或者比较麻烦去实现,比如跟随主窗口移动、显示/隐藏等。因此,本人想到一个比较简单的方法来实现子窗口的半透明效果。 重载子窗口的OnEraseBkgnd消息,在该函数里先实现全透明效果。也就是抓取主窗口在子窗口下的背景图,然后贴到子窗口的背景上。然后在子窗口画一个半透明效果的矩形,即实现了半透明效果的子窗口。

  1. OnEraseBkgnd(CDC* pDC)
  2. {
  3. // TODO: 在此添加消息处理程序代码和/或调用默认值
  4. //绘制子窗口的背景,用主窗口的背景填充,实现透明效果
  5. CRect clientRect;
  6. CDC dcEraseBkgnd;
  7. GetClientRect(&clientRect);
  8. int cx = clientRect.Width();
  9. int cy = clientRect.Height();
  10. // First we should save our DC.
  11. CBitmap bitmap;
  12. if(m_dcEraseBkgnd.GetSafeHdc())// Delete our original DC.
  13. m_dcEraseBkgnd.DeleteDC();
  14. m_dcEraseBkgnd.CreateCompatibleDC(pDC);
  15. bitmap.CreateCompatibleBitmap(pDC,cx,cy);
  16. m_dcEraseBkgnd.SelectObject(&bitmap);
  17. m_dcEraseBkgnd.BitBlt(0,0,cx,cy,pDC,0,0,SRCCOPY);
  18. //绘制一个半透明的矩形
  19. CDC memdc;
  20. CBitmap bmp,*pOldBitmap;
  21. memdc.CreateCompatibleDC(pDC);
  22. bmp.CreateCompatibleBitmap(pDC,320,110); //该函数创建与指定的设备环境相关的设备兼容的位图。
  23. //nWidth:指定位图的宽度,单位为像素。 nHeight:指定位图的高度,单位为像素。
  24. pOldBitmap = memdc.SelectObject(&bmp); //选择一对象到指定的设备上下文环境中
  25. CBrush brush,brushOut;
  26. brush.CreateSolidBrush(RGB(230,230,230));
  27. memdc.SelectObject(brush);
  28. memdc.FillSolidRect(0,0,320,110,RGB(230,230,230)); //.用指定的固体色填充矩形。x,y坐标。cx,cy宽高
  29. BLENDFUNCTION bf;
  30. bf.BlendOp = AC_SRC_OVER;
  31. bf.BlendFlags = 0;
  32. bf.SourceConstantAlpha = 0xAf; //半透明(0-ff,透明度从全透明到不透明)
  33. bf.AlphaFormat = 0;
  34. pDC->AlphaBlend(0,0,320,110,&memdc,0,0,320,110,bf);  //0,0表示在对话框显示的坐标
  35. memdc.SelectObject(pOldBitmap);
  36. }

MFC实现父窗口不透明,子窗口半透明效果相关推荐

  1. qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...

    1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...

  2. C#关闭子窗口而不释放子窗口对象的问题解决

    在网上找来一些方式,感觉还都不错,下面给出方式: 在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置.调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载.另一种简单方式是直接使用该参 ...

  3. window.showModalDialog模式窗口无法在子窗口访问解决办法

    window.showModalDialog打开的模式窗口无法在子窗口访问 如:window.showModalDialog("A.aspx", null, "help: ...

  4. 主窗口刷新,子窗口闪烁

    问题:主窗口刷新,子窗口闪烁 解决方案:主窗口创建时,传WS_CLIPCHILDREN 转载于:https://www.cnblogs.com/chunyou128/p/3739193.html

  5. Layer 父窗口如何获得子窗口的标签元素值

    父窗口获取子窗口标签元素值(Layer插件) 获取子窗口的标签元素值如下: layer.open({type: 2,area:["1650px","650px" ...

  6. [PYQT5] 主窗口弹出子窗口

    需求: 在PYQT5中,点击主窗口中的按钮,弹出子窗口. 测试代码: 例1: 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQ ...

  7. C++ Windows窗口程序:子窗口控件之按钮类button

    Windows窗口程序设计中,按钮.文本编辑框等控件都作为一个子窗口在WM_CREATE事件中创建的.其中按钮类button有多种类型和风格,常见的单选钮.复选钮.分组框也在此类中,见下表: 子窗口控 ...

  8. Python PyQt5中弹出子窗口,解决子窗口一闪而过

    方式一:槽函数中创建子窗口对象,赋值到普通变量 在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其 show 方法. from PyQt5.QtWidgets im ...

  9. 使窗口(和 MDI 子窗口)的关闭按钮变灰的方法 - 回复 梦想成真

    问题来源: http://www.cnblogs.com/del/archive/2008/06/14/1221980.html#1225922 //这样就可以使当前窗口的关闭按钮变灰, 但系统菜单中 ...

  10. QT中如何在主窗口中添加子窗口

    1.方法 原理其实很简单,和在窗口上动态(代码的形式)添加控件的方法一样,但需要设置一下子窗口的属性: 在子窗口构造函数中添加代码: setWindowFlags(Qt::FramelessWindo ...

最新文章

  1. AI工程师面试知识点:神经网络相关
  2. 读书笔记-我所理解的生活
  3. javascript es6 == === is 区别
  4. 获取jar包内部的资源文件
  5. Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable...
  6. 【云栖计算之旅】线下沙龙第2期精彩预告:Docker在云平台上的最佳实践
  7. 如何在 Laravel 中使用锁
  8. sql取系统时间减一小时_Java秒杀系统实战系列-整体业务流程介绍与数据库设计...
  9. 哈佛引用格式(Harvard referencing system)
  10. Stardock Fences v3.1.0.5 桌面整理、图标分类工具
  11. speex 编码简介
  12. 二极管ss14测量_二极管如何测量好坏
  13. DTM动态主题模型实战案例
  14. php破解referer防盗链解析,Referer原理与图片防盗链实现方法详解
  15. 通过IP查找ip所对应网卡名
  16. mysql 批量造假数据
  17. linux软路由关闭超线程,结论 - Linux 软路由性能测试及分析[图文]_Linux教程_Linux公社-Linux系统门户网站...
  18. unity EZ Replay Manager 1.53
  19. 7天入门数据库 day23 - 数据表的CURD
  20. 网站外网访问以及如何申请域名

热门文章

  1. 中考计算机考试不合格会怎么样,初中小三科考试不及格对升高中有影响吗
  2. VGA SVGA XGA SXGA 是什么意思(转)
  3. Left 4 dead 破解攻略
  4. java+Vue-springboot企业公司在线办公自动化OA系统
  5. Hydra—密码爆破神器
  6. 【译】LiveData-Flow在MVVM中的最佳实践
  7. 小学期 校园导游系统2.0
  8. contextmenu样式 wpf_WPF ContextMenu设计。如何在WPF MenuItem中设置背景?
  9. java 第一天_Java学习第一天
  10. web标准与HTML语义化