SetClassLong 常用于替换光标样式,增添美观性;
DWORD SetClassLong(
HWND hWnd, // handle of window (窗口句柄)
int nIndex, // index of value to change (设置的属性)
LONG dwNewLong // new value (设置的属性的值)
);
nlndex 属性索引 GCL_CBCLSEXTRA:
//设置与类相关的尺寸的字节大小。设定该值不改变己分配的额外字节数。
GCL_CBWNDEXTRA:
//设置与类中的每一个窗口相关的尺寸的字节大小。设定该值不改变已分配额外字节数。查看如何进入该内存,参看SetWindowLOng。
GCL_HERBACKGROUND:
//替换与类有关的背景刷子的句柄。
GCL_HCURSOR:
//替换与类有关的光标的句柄。{替换指定窗口中的光标图标,dwNewLong 读取光标位置 如 '1.ani'}
GCL_HICON:
//替换与类有关的图标的句柄。 {替换指定窗口中的程序图标,dwNewLong 读取图标位置 如 '1.ico'}
GCL_HMODULE:
//替换注册类的模块的句柄。
GCL_STYLE:
//替换窗口类的风格位。
CGL_MENUNAME :
//替换菜单名字符串的地址。该字符串标识与类有关的菜单资源。
GCL_WNDPROC :
//替换与窗口类有关的窗口过程的地址。
例:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, jpeg, ExtCtrls,xpman;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
HNewCursor: Hcursor;
begin
HNewcursor:=LoadCursorfromfile('1.ANI');
//调用API函数装载动画光标文件,ANI文件路径请根据自己的实际情况进行调整
SetClassLong(Form1.Handle,GCL_HCURSOR,HNEWCURSOR);
//替换光标为制定光标.
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
HoldCursor:=SetClassLong(Form1.Handle,GCL_HCURSOR,0);
Close;
//在结束程序前一定不要忘记恢复光标,属性值0我的理解应该是还原为系统光标
end;
end.