最近看到别人写的一个例程,就是把控制台弄成了全透明,我把源码下载下来做了研
究。
其实从Vista版本之后,WindowsAPI里面增加了几个函数,用于Aero效果的实现。有
两个最主要的:DwmExtendFrameIntoClientArea和DwmIsCompositionEnabled。
DwmIsCompositionEnabled用于检测系统的桌面组合功能是否打开。
DwmExtendFrameIntoClientArea用于开启控制窗体的玻璃效果,他需要一个名为
MARGINS的结构作为参数,表达的是窗口四周的边框。我们实际上就是要非客户区的
边框往内扩展,等到MARGINS足够大之后,就变成全玻璃特效的了。
下面是两个实例:
1.c++下使控制台变透明
![[2013.9.6]说说Win7的Aero效果_源码下载](https://s2.51cto.com/images/blog/202304/13105112_64376e20ada9714771.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
效果 如果是win7家庭版没有透明特效是这个样子:
![[2013.9.6]说说Win7的Aero效果_构造函数_02](https://s2.51cto.com/images/blog/202304/13105113_64376e211646238300.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
旗舰版等有透明特效的是这个样子
![[2013.9.6]说说Win7的Aero效果_c++_03](https://s2.51cto.com/images/blog/202304/13105113_64376e219ad8743023.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
2.c#下使窗体变透明
这个事先要声明一些东西作为准备
![[2013.9.6]说说Win7的Aero效果_c++_04](https://s2.51cto.com/images/blog/202304/13105113_64376e21d2b7091039.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
然后在构造函数下调用即可
![[2013.9.6]说说Win7的Aero效果_源码下载_05](https://s2.51cto.com/images/blog/202304/13105114_64376e2226ce083584.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
效果
![[2013.9.6]说说Win7的Aero效果_构造函数_06](https://s2.51cto.com/images/blog/202304/13105114_64376e226cb2182124.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
















