VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透
2014-12-17 13:30
363 查看
在初始化中使用下面两行代码
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),也就是说设置纯色透明可以达到鼠标穿透,混合色不穿透。 很奇怪,我也没仔细研究是什么原因,就记录下吧。
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 部分窗口透明鼠标穿透
- 【转】窗口透明鼠标穿透
- [实例]鼠标穿透窗口 & 窗口渐变透明 By 小鸟喳喳叫
- VC++简单实现鼠标点击穿透窗口
- 可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
- qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
- 鼠标穿透控制下层窗口的滚动条
- VC如何实现透明窗口
- VC++鼠标进入离开窗口
- VC窗口透明
- VC中的鼠标穿透效果
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子
- 让窗口透明。并支持鼠标穿过。
- VC如何实现透明窗口
- VC:透明窗体+接收鼠标事件
- VC实现鼠标移动对话框窗口
- vc 将位图多余部分变为透明
- Png图片的透明部分穿透测试
- qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
- 部分透明,异形窗口