rt
解决方案 »
- 如何在xp sp1的条件下无驱动进ring0呢
- 回调函数的使用
- 咨询一个多线程通讯的问题
- 类型转换问题——————在线等待!!!!
- 各位朋友,真的不能实现ms xml3.0的功能吗?会这种的朋友请帮助.我的原代码如下:
- 想实现一个思路,不知道怎么做,就是要实现按一个热键,然后就调用屏幕保护程序或者直接黑屏也行。
- 请问如何动态改变报表纸张类型?
- InstallShield Express For Delphi 6 的问题
- 关于dbgrid的列锁定,qiubolecn(来自差生市)请你在进来指教指教!
- *****密码算法*****
- 请问怎么使用DBMemo编辑*.db中的数据?
- 高分赠送,怎样安装delphi的按件包
只能适用于2000,
98就不行了
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,其他的我不太清楚,因为没有api帮助
end;