首页
社区
课程
招聘
Win2000/XP下的半透明窗口类 [祝贺新版开张,灌一瓢先]
发表于: 2005-6-3 12:18 15937

Win2000/XP下的半透明窗口类 [祝贺新版开张,灌一瓢先]

2005-6-3 12:18
15937

/*********************************************************************                                 
               Win2000/XP下的半透明窗口类 CSemiTransWnd
  
1. 类的用途

     闲来无事,见ActiveSkin控件的界面效果不错,就逆向了一下它的工作原理,后在网上查了些资料,写了这个类.

         这个类只能在Win2000以上的环境下使用!

2. 编译环境

     Visual Studio 2003 V7.1.3091 ,在VC6下使用需要作些处理.

    由于用到了Win2000以后才有的函数,需在Stdafx.h开头添加两行宏定义,否则编译会出错!

    #define WINVER        0x0500
    #define _WIN32_WINNT  0x0500

3. 使用步骤

     CSemiTransWnd cstw;     //定义一个对象
         cstw.Load("demo.tga");  //装载TGA图片
         cstw.Attach(hWnd);      //关联到指定的窗口句柄
         CDC * pDC=cstw.GetDC(); //获取DC

             用这个DC绘制你的东东!

         cstw.Update();          //显示到屏幕上

4. 一些说明

     使用Load可以从TGA图片中提取RGBA数据.而用Create用户可以自己创建RGBA数据.
     
     类是免费的,但代码可能有BUG,您可以在非商业用途上随意使用!

*********************************************************************/
附件是包含类源代码的Demo程序!

附件:SemiTransWndDemo.rar


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (24)
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
2
第1个顶啊~   
2005-6-3 12:32
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
3
解压有问题
2005-6-3 12:53
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
4
没问题啊~ 可以用。
2005-6-3 12:56
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
5
如果只是简单地把窗口设成半透明,直接用 API  SetLayeredWindowAttributes 便可以
2005-6-3 13:17
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
6
是我的系统的问题。试用了,很不错
2005-6-3 13:28
0
雪    币: 230
活跃值: (180)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
最初由 riijj 发布
如果只是简单地把窗口设成半透明,直接用 API SetLayeredWindowAttributes 便可以


只用SetLayeredWindowAttributes让窗口整体半透明是很简单!
但如何让部分半透明、部分不透明、部分透明?还请兄弟多多指教!
2005-6-3 13:57
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
8
学习了,这个并不是简单地把窗口半透明,而是用带ALPHA通道的TGA文件做背景.注意必须在2K以上系统上才有效果.
2005-6-3 14:00
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
9
最初由 qINGfENG 发布


只用SetLayeredWindowAttributes让窗口整体半透明是很简单!
但如何让部分半透明、部分不透明、部分透明?还请兄弟多多指教!


当然不可以  

所以,我说是 “简单地” 才使用 SetLayeredWindowAttributes
2005-6-3 14:06
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
10
如果真的要用 windows 的 GDI 方式来使用 Alpha channel,使窗口某部份有不同程度的半透明, MSDN 是建议用 UpdateLayeredWindow

这个 API 里可以指明一张 32 bit bitmap,来达到 per pixel 的半透明

可是我没有使用过,有兴趣的话可以试试
2005-6-3 14:26
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
11
VC6下使用说明???
2005-6-3 14:57
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
12
最初由 kyc 发布
VC6下使用说明???


VC 6 没有,查 VS .NET 的 MSDN 才会检到相关说明

而且,听说过要到微软下载 Platform SDK,才有正确的 header ?

线上 msdn :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/updatelayeredwindow.asp
2005-6-3 15:04
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
13
qINGfENG大哥为何研究这个?难道你在做界面?
2005-6-3 17:54
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
fly,riijj姐姐的帖子和回复,我都收藏~!
2005-6-4 08:05
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
15
good..thanks..可能会用来写注册机的界面
2005-6-4 14:58
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
16
最初由 Immlep 发布
good..thanks..可能会用来写注册机的界面


同意,用来写注册机效果不错。
2005-6-4 16:46
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
17
恩,有界面了,有MX了,keygen模版基本上可以出来了

谁有兴趣搞一下
2005-6-4 17:54
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
18
看雪学院出品?  
2005-6-5 14:59
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
19
最初由 prince 发布
看雪学院出品?

2005-6-6 09:06
0
雪    币: 230
活跃值: (180)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
20
最初由 prince 发布
qINGfENG大哥为何研究这个?难道你在做界面?




看这个半透明菜单如何?

BTW:代码还未优化.

附件:SemiTransMenuDemo.rar
2005-6-8 13:32
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
21
最初由 kimmal 发布
fly,riijj姐姐的帖子和回复,我都收藏~!


riijj
日jj姐姐..
2005-6-8 15:02
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
22
我不是女的….  
2005-6-8 16:45
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
23
最初由 riijj 发布
我不是女的….


2005-6-8 17:49
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
24
最初由 qINGfENG 发布




看这个半透明菜单如何?
........


Cooool~ 右键菜单都透明啦!

代码快交出来! 不然...
2005-6-8 17:51
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
嘿嘿,Mark~~~~~~~~~~~
2005-6-10 13:52
0
游客
登录 | 注册 方可回帖
返回
//