VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透
在初始化中使用下面两行代码
ModifyStyleEx(0, WS_EX_LAYERED);
::SetLayeredWindowAttributes(m_hWnd, RGB(1, 255, 0), 100, LWA_COLORKEY); //set color transparent,指定透明的颜色
然后在OnEraseBkgnd或者OnPaint中
CRect rect;
this->GetClientRect(&rect);
dc.FillSolidRect(rect, RGB(1, 255, 0)); //填充指定透明的颜色
可以达到窗口透明,当然你可以填充指定矩形区达到局部透明。
那么问题来了,当这样透明后,鼠标无法穿透透明区域,怎么才能做到鼠标穿透呢? 很简单,将填充颜色改为RGB(0, 255, 0),也就是说设置纯色透明可以达到鼠标穿透,混合色不穿透。 很奇怪,我也没仔细研究是什么原因,就记录下吧。
VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透的更多相关文章
- qt 窗口鼠标穿透
Qt 不规则窗体 – 鼠标点击穿透 qt实现鼠标穿透,如果要被穿透窗口只有一层,也即没有嵌套窗口,直接只用对子窗口使用setAttribute (Qt::WA_TransparentForMouseE ...
- winform和wpf如何实现鼠标穿透的效果
先看一下鼠标穿透的效果: 可以看到Form1这个程序虽然遮在了桌面的上面,但是我们还可以在窗体上点击桌面上的必应词典和网易邮箱大师,好像这个叫“Form1”的窗口被“穿透”一样. winform版本: ...
- C# 鼠标穿透窗体功能
通过以下代码,在窗体启动后调用方法SetPenetrate() 即可实现窗体的穿透功能. 同样该功能需要加载命名空间 using System.Runtime.InteropServices; pri ...
- C#使用Windows API实现桌面上的遮罩层(鼠标穿透)
C#使用Windows API实现桌面上的遮罩层(鼠标穿透) C#实现实现桌面上的遮罩层(鼠标穿透)主要通过一下几个API函数来实现:GetWindowLong,SetWindowLong,SetLa ...
- linux下鼠标穿透和取消穿透--linux小白,大神无视
最近在用qt写一个跨平台的软件,因为设置了无边框,并且我自己给程序窗口加了阴影,阴影范围又比较大 所以必须给阴影区域加上鼠标穿透才能有更好的体验. 上网查了一下,在windows下使用SetWindo ...
- C#-窗体鼠标穿透
#region 窗体鼠标穿透 private const uint WS_EX_LAYERED = 0x80000; private const int WS_EX_TRANSPARENT = 0x2 ...
- Qt 隐藏标题栏后实现窗口拖动、设置窗口透明
隐藏标题栏 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::FramelessWindowHint); 两个函数都可以去掉标题栏 ...
- CentOS下Qt窗口透明效果失效,成黑色背景的问题
一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行 ...
- QML学习笔记(一)-防止鼠标穿透事件
作者: 狐狸家的鱼 Github: 八至 1.防止鼠标穿透 MouseArea{ anchors.fill: parent; onClicked: {}; onReleased: {}; onPres ...
随机推荐
- hdu 5115 Dire Wolf(区间dp)
Problem Description Dire wolves, also known as Dark wolves, are extraordinarily large and powerful w ...
- 和Eclipse一起走过的日子
一见钟情 大二上学期,第一次接触java Web.老师为了帮助我们从底层理解java Web的执行环境,要求我们不能使用不论什么IDE,仅仅能用记事本. 好吧,老师也是为了咱好.简单的一个 ...
- [ACM] hdu 1003 Max Sum(最大子段和模型)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- [Python]ConfigParser解析配置文件
近期发现非常多接口配置都硬编码在souce file中了,于是就看了下python怎么解析配置文件,重构下这一块. 这个应该是早就要作的... 配置文件: [mysqld] user = mysql ...
- OC 实现多选参数
在iOS的开发过程中有许多方法都是有可选参数的,例如: + (instancetype)arrayWithObjects:(ObjectType)firstObj, ... NS_REQUIRES_N ...
- CentOS6.3下搭建vsftpd(采用虚拟用户设置)
CentOS6.3如果在安装的时候所有安装选项都打勾的话就含有单间vsftpd必备的软件:vsftpd.pam*.db4* 检查是否安装: [root@centos6 ~]# rpm -qa | gr ...
- FPGA开发(1)
`timescale ns / ns module system_ctrl ( //globol clock input clk, input rst_n, //synced signal outpu ...
- Android 更好的Activity生命周期回调
/** * This class allows you to listen to when the user is entering the background (i.e. after a home ...
- Confluent
Confluent介绍(一) 最开始接触confluent是通过这篇博客,How to Build a Scalable ETL Pipeline with Kafka Connect,对于做大数 ...
- SQL Server 固定角色
1. 查看固定服务器角色 execute sp_helpsrvrole; 管理: execute master..sp_addsrvrolemember @logingName='neeky' @ro ...