如何实现瑞星那样淡入淡出的程序启动界面?
解决方案 »
- 写的1个比较参数大小的功能不起作用?
- 窗口失去焦点
- ····发布2005新版的超级猛料·····
- canvase does not drawing
- 用FastReport做A4横打,在本地打印机上打印正常,但在网络打印机上打印却成了竖打。有什么方法解决?
- 关于数据的提交
- 求教:为什么线程中执行Ado.ExecSQL出错?
- 今天看了一个新闻,说微软在搞.net平台上的动态语言(脚本语言)
- 一个Socket的问题!
- 有在大连的希望新技术电脑培训学校学习过或熟悉此学校的朋友吗?印象、学习效果如何?我想从广东前往学习,请给点意见。
- 我在做报表时用quickrep控件,为什么我这样不行呢?很怪。。。。在线等待
- 请问dataobject单元在哪里?
dwFlags:
AW_SLIDE
AW_ACTIVATE
AW_BLEND
AW_HIDE
AW_CENTER
AW_HOR_POSITIVE 水平从左到右
AW_HOR_NEGATIVE 水平从右到左
AW_VER_POSITIVE 垂直从左到右
AW_VER_NEGATIVE 垂直从右到左
比如:
AnimateWindow(handle,400,AW_BLEND or AW_ACTIVATE) 淡入
AW_BLEND or $00010000 淡出
AW_HIDE or Random(16)+1 随机
当然,还可以利用form中的alphablend属性,自己研究吧!
to:一楼的这个函数在win98有效吗?
To:二楼的你的这个帖子在win98下试过吗?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TTranForm = class(TComponent)
private
FAlphaValue : integer ;
FHandle : HWND ;
procedure SetFAlphaValue(Alpha:integer) ;
protected
procedure UpdateDisplay ;
public
constructor Create(AOwner: TComponent); override;
published
property AlphaValue : integer read FAlphaValue write SetFAlphaValue ;
end;procedure Register;function SetLayeredWindowAttributes
(Handle : HWND; COLORKEY : COLORREF; Alpha : BYTE; Flags : DWORD) :
Boolean;
stdcall; external 'USER32.DLL';implementationprocedure Register;
begin
RegisterComponents('Standard', [TTranForm]);
end;{ TTranForm }
procedure TTranForm.SetFAlphaValue(Alpha: integer);
begin
if (Alpha >= 0) and (Alpha < 256) then begin
FAlphaValue := Alpha ;
UpdateDisplay() ;
end else
ShowMessage('请输入0~255之间的值!') ;
end;procedure TTranForm.UpdateDisplay;
begin
if not (csDesigning in ComponentState) then
SetLayeredWindowAttributes(FHandle, 0, FAlphaValue, 2);end;constructor TTranForm.Create(AOwner: TComponent);
begin
inherited;
FAlphaValue := 255 ;
FHandle := TForm(Owner).Handle ;
if not (csDesigning in ComponentState) then
SetWindowLong(FHandle,GWL_EXSTYLE, GetWindowLong(FHandle, GWL_EXSTYLE )
or $80000 );end;end.**************
const
WS_EX_LAYERED = $80000;
AC_SRC_OVER = $0;
AC_SRC_ALPHA = $1;
AC_SRC_NO_PREMULT_ALPHA = $1;
AC_SRC_NO_ALPHA = $2;
AC_DST_NO_PREMULT_ALPHA = $10;
AC_DST_NO_ALPHA = $20;
LWA_COLORKEY = $1;
LWA_ALPHA = $2;
ULW_COLORKEY = $1
ULW_ALPHA = $2
ULW_OPAQUE = $4
//新增加的常量定义
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明
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, 0, 180, LWA_ALPHA);
//第二个参数是指定透明颜色
//第二个参数为0则使用第四个参数设置alpha值,从0到255。
end;
////////////////////
看看这个98好使不好使!
9x里面不能用AnimateWindow
在51DELPHI可以下。
地方控制贴图时间即可哈哈哈,一个笨办法,试试看吧