网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.类似网络蚂蚁的悬浮窗体.
.Delphi5的水晶报表控件在Delphi6.
.再谈后台调用外部程序的完美实现.
.今天做了一个小软件,总结了一些经.
.组件制作之四(定制外观).
.在Delphi中开发使用多显示器的应.
.检测Delphi是否正在运行.
.delphi来写你的第一个dll文件,非.
.试卷自动生成系统的开发与应用.
.QQ窗体自动隐藏效果探究.
.如何移动没有标题的窗体.
.对使用Delphi制作DLL复用文件的建.
.DLL全局钩子.
.在流中查找任意字串.
.利用Delphi编写Socket通信程序.
.用Delphi实现整个网站图片的极速.
.利用内存映射文件扩充程序可用的.
.在TwebBrowser中调用隐藏的IE命令.
.DEPHI发布时免安装环境.
.由数据库数据生成XML的方法(有源.

半透明窗体的制作

发表日期:2006-2-4


半透明窗体并不是Win2000的新特效,凡是用过金山词霸的同志都会发现在屏幕取词设置中有一个半透明背景的选项,这说明在Win98下是可以实现半透明窗口的。但我还是要首先谈谈在Win2000实现半透明窗体的新函数SetLayeredWindowAttributes。利用这个函数就可以轻松创建一个半透明窗体,但是利用这个函数的程序编译后在Win98下是无法运行的。 SetLayeredWindowAttributes API函数介绍如下: 函数功能:设置窗口透明颜色 参数:SetLayeredWindowAttributes( HWND hwnd, //窗口手柄 COLORREF crKey, //指定颜色值 BYTE bAlpha, //混合函数值 DWORD dwFlags //动作 参数解释: hwnd:窗口句柄。当使用CreateWindowEx函数创建窗口时,窗口由WS_EX_LAYERED指定的值创建;或者窗口已经创建后,由SetWindowLong根据WS_EX_LAYERED指定的值改变。 crKey:指向一个COLOR值,该值指定一个透明颜色值,当创建窗口时,窗口将使用该值。 bAlpha:混合函数值。该值用于描述窗口的不透明度。当bAlpha 值为0时,窗口完全透明,当bAlpha值为255时,窗口完全不透明。 dwFlags:指定动作。这个参数可以取一个或多个值。用它我们可以创建一个不规则的窗体。 SetLayeredWindowAttributes函数的API声明: SetLayeredWindowAttributes(hwnd: HWND; crKey: DWORD;bAlpha: BYTE; dwFlag: DWORD): Boolean; stdcall; ---------程序代码1: const WS_EX_LAYERED = $80000; LWA_COLORKEY = $1; LWA_ALPHA = $2; procedure TForm1.FormCreate(Sender: TObject); var l:longint; begin l :=getWindowLong(Handle, GWL_EXSTYLE); l := l Or WS_EX_LAYERED; SetWindowLong (handle, GWL_EXSTYLE, l); SetLayeredWindowAttributes(handle, 180, 120, LWA_ALPHA); end;还有一些其它的常量定义如: AC_SRC_ALPHA = $1; AC_DST_NO_PREMULT_ALPHA = $10; ULW_COLORKEY = $1; ULW_ALPHA = $2; ULW_OPAQUE = $400; 等还要参看MSDN。有些我还没有搞明白,如果哪位同志知道的话,请告诉我。 那么在Win98下又是如何实现半透明窗体的呢?其基本原理是:在窗口显示前其获取背景图然后对背景图象进行滤镜效果处理再将处理过的背景图象显示在窗口前面。 有一种方法是:首先,做出一个透明窗体,然后在窗体上添加一个Shape,将其扩展至全屏幕,将Shape的Pen的Mode属性设为PmMask,Pen的Style属性设为PsClear,最后改变Brush的Color属性即可。 因为没有API支持,Win9x下只能模拟,效果不太好,就象金山词霸的取词窗口,背景改变而窗体上还是不变。但我们可以利用Timer控件来解决窗体的刷新率和时时更新的问题。 不过听说“金山词霸的半透明窗口效果只能在带MMX指令集的处理器中才起作用”不知是真是假,由于手头没有这样的电脑,还请同志们自己验证吧。
上一篇:Linux上最新的Kylix截屏画面 人气:3974
下一篇:怎样让程序延时 人气:4862
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐