搭建论坛《搭建之星》论坛经验交流 → [分享]窗口透明构件不透明实例(高手请绕行)


  共有3022人关注过本帖树形打印

主题:[分享]窗口透明构件不透明实例(高手请绕行)

帅哥哟,离线,有人找我吗?
春林
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:技师 帖子:739 积分:1321 威望:3 精华:2 注册:2003-9-19 17:24:58
[分享]窗口透明构件不透明实例(高手请绕行)  发帖心情 Post By:2008-6-25 18:55:21


这个问题很久前就讨论过,但是没有很好的结果。其实搭建提供了对系统动态链接库的调用,那么很多功能就可以通过这个来实现,但是首先要知道该用哪个链接库,哪个函数,函数的具体参数都是什么含义等等。

今天有点时间,给大家发一个窗口背景透明而构件不透明的实例,下面有我的简要解说,这样更能使初学者明白为什么这样做,这个实例奉献给菜鸟族,因我也是菜鸟,知道菜鸟很希望知道实例的过程原因,所以写了说明。

对于高手这可能是班门弄斧,所以请高手们路过或绕行,仅以此帮助一下初学者,也说明搭建的可扩展性还很多。

这个实例首先要用到WINDOWS系统中的“User32”动态链接库中的4个API函数,先介绍一下这4个函数:

函数名称:GetForegroundWindow
动态链接库:user32
用途解释:获得当前活动窗口的句柄。返回值类型为整数型,即当前活动窗口的句柄。
参数说明:无参数

函数名称:GetWindowLongA
动态链接库:user32
用途解释:获得指定窗口的结构数据信息,什么叫"窗口的结构数据信息"?就是1个窗口的诸方面情况吧,象人有姓名性别年龄等一样,窗口有"扩展样式(包含标题栏,有标题栏缩小、无标题栏等的组合值)","样式(包含滚动条、系统菜单、边框等可设置)","父窗口","子窗口","窗口函数"等诸多方面,见下面nIndex参数值。这些方面的内容(每1方面只能有1个当前值)就构成了窗口的结构信息。
参数说明:

第一个参数(hWnd)整数型:窗口句柄及间接给出的窗口所属的窗口类。(即上一函数返回值赋值这里,决定获得哪个窗口的信息)
第二个参数(nIndex)整数型:欲取回此窗口哪方面的信息,可以是下述任何一个常数:

常量 属性值 说明
GWL_WNDPROC -4 为窗口过程设定一个新的地址
GWL_HINSTANCE -6 设置窗口句柄
GWL_HWNDPARENT -8 当前窗口的父窗口句柄
GWL_ID -12 设置窗口标识符
GWL_STYLE -16 设定窗口风格
GWL_EXSTYLE -20 设置窗口的扩展风格
GWL_USERDATA -21 设置与窗口有关的32位值,每一个窗口均有一个由创建该窗口的应用程序使用的32位值。当hWnd参数标识了一个对话框时,也可使用下面的DWL_DLGPROC、DWL_MSGRESULT和DWL_USER值
DWL_DLGPROC 4 设置对话框过程的新地址
DWL_MSGRESULT 0 设置在对话框过程中处理的消息的返回值
DWL_USER 8 设置的应用程序私有的新的额外信息,例如一个句柄或指针

函数名称:SetWindowLongA
动态链接库:user32
用途解释:常用此函数来动态地设置窗口的风格(如样式,滚动条等等)。即不在属性窗口中设置。而在API中设置。
参数说明:

第一个参数(hwnd)整数型:欲设置信息的窗口的句柄
第二个参数(nIndex)整数型:请参考GetWindowLongA函数的nIndex参数的说明
第三个函数(dwNewLong)整数型:由nIndex指定的窗口信息的新值

函数名称:SetLayeredWindowAttributes
动态链接库:user32
用途解释:用于设置个性特殊窗口的函数。
参数说明:

第一个参数(HWND hwnd)整数型:应用目标窗口句柄
  第二个参数(COLORREF crKey)整数型:掩码颜色,可以用RGB(r,g,b)来指定
  第三个参数(BYTE bAlpha):掩码颜色部分Alpha值,0是全透明,255是完全不透明
  第四个参数(DWORD dwFlags):透明方式

下面说一下实例的设计思路及过程:

1、窗口启动后,先置背景颜色与一个便于运算的数值。
2、将新的背景色存于变量X中,后面要用此运算。
3、利用“GetForegroundWindow”函数取出窗口句柄,因为后面的函数要用到这个窗口句柄。
4、利用“GetWindowLongA”函数取出窗口信息(扩展风格),后面的函数要用到这个信息。
5、将取出的信息值与“524288”进行“或”运算,这个是用于后面的函数设置新信息之用。
6、利用“SetWindowLongA”函数设置窗口新的信息。
7、利用“SetLayeredWindowAttributes”函数设置透明背景而构件不透明的窗口。

我介绍的比较简单,更深奥的函数说明请大家在网络上搜索一下相关的专业说明文档。


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:





支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
roy78
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 没事找事
等级:设计员 帖子:442 积分:2499 威望:0 精华:0 注册:2005-9-12 3:09:56
  发帖心情 Post By:2008-6-25 20:42:48

真的好开心,论坛似乎开始活跃起来了。希望会有更多,更好的的交流。另感谢楼主提供这么好的例子学习~~~


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
FSJM
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2323 积分:6885 威望:9 精华:0 注册:2002-10-23 13:50:52
  发帖心情 Post By:2008-6-25 22:01:07

非常不错,很有创意;应传到“搭建联盟”上保存,以便查找。

下次升级,将增加得到窗口句柄“方法”,以使调用API更简单一些。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
pc_doctor
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 卧龙樵夫
等级:首席分析师 帖子:1270 积分:7005 威望:0 精华:3 注册:2003-3-23 14:15:25
  发帖心情 Post By:2008-6-28 9:04:45

很高,很强,很霸道,很实用!图片点击可在新窗口打开查看

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
洪滨
  5楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 大地软件
等级:版主 帖子:4381 积分:9888 威望:5 精华:9 注册:2002-9-9 7:55:12
  发帖心情 Post By:2008-7-1 10:32:51

非常感谢春林提供高超的实例,使星的动态连接功能更加灵活多样!


★大地软件论坛http://jsrccb.k.zhanqunabc.com/★搭建之星QQ群

号:31757462 微信号:wwwddkj

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
wenti
  6楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:爱好者 帖子:75 积分:582 威望:0 精华:0 注册:2009-6-22 15:44:49
  发帖心情 Post By:2010-1-3 19:56:53

请问如何调节透明度呢

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
rosn
  7楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:技术员 帖子:115 积分:1372 威望:0 精华:0 注册:2008-10-9 13:42:27
  发帖心情 Post By:2010-1-3 20:55:40

“星”的窗口属性中,都直接提供了,直接设置就可以。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
admin
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 搭建官方
等级:管理员 帖子:5504 积分:20561 威望:9 精华:5 注册:2002-4-5 17:08:42
  发帖心情 Post By:2010-1-3 23:22:32

对,直接调节“窗口透明”属性即可。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

[分享]窗口透明构件不透明实例(高手请绕行)








签名