如何做出窗体的淡入效果,就好像白浪语音板一样的效果 这个需要你自己去绘制窗体了,比较高深的图形编程。重载Paint方法。如果连标题栏都要特殊绘制,只有不要标题栏或拦截WM_NCPAINT消息。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows 2000支持淡入淡出效果,大家都知道了。前两天研究FormContainer的Form显示效果时,得高人告知,核心API函数就是SetLayeredWindowAttributes,以下的控件代码是让你的窗口实现淡入淡出效果而设计,通过编程时动态改变AlphaValue值,您就可以看到效果了。unit TranForm; {DragonPC 2001.2.21 }interfaceuses 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; 快速散分,10分钟后结贴 dbgrideh复选框如何默认不选中? 新手求助 c 转 Delphi CRC16 报告一个关于WideFormat函数的Bug??? 我把函数名存在一个字符串里,怎样动态地去执行它. 文件操作 DELPHI中报表问题,请帮帮忙-----在线等 老问题:在有些系统里TSeverSocket只能连接90-100个TClientSocket. 才来这里,问个问题. 在Delphi中,如何使用RAS函数? 请教一个问题:如何编写一个位于最最上层的窗口,像oicq那样(我发现它能够位于最最上层) table的Applayupdatas和Cancelupdatas
示效果时,得高人告知,核心API函数就是SetLayeredWindowAttributes,以下的控件
代码是让你的窗口实现淡入淡出效果而设计,通过编程时动态改变AlphaValue值,您就
可以看到效果了。unit TranForm; {DragonPC 2001.2.21 }interfaceuses
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;