关于动态创建光标的问题(100)

  • 主题发起人 主题发起人 FreeAndNil
  • 开始时间 开始时间
F

FreeAndNil

Unregistered / Unconfirmed
GUEST, unregistred user!
看到一些软件中,鼠标点中界面上某个可拖动的控件或图形,鼠标就变成半透明的图形+箭头的样子,很动态,这个效果怎么实现?不是加载资源文件中的光标,而是动态创建的,没头绪,请教一下。谢谢。
 
可以使用图片显示控件,将其设置为透明,并隐藏,在需要时将其显示并移动到指定位置。
 
DELPHI帮助:const crMyCursor = 5;procedure TForm1.FormCreate(Sender: TObject);begin Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'NewCursor'); //或者LoadCursorFromFile Cursor := crMyCursor;end;-----------LoadCursorFromFile帮助: http://baike.baidu.com/view/1079911.htm
 
可以通过SetClassLong 和LoadCursorFromFile 函数实现unit Unit1;interfaceuses 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 HOLDCURSOR:HCURSOR; //定义一个变量 { 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文件路径请根据自己的实际情况进行调整 HoldCursor:=SetClassLong(Form1.Handle,GCL_HCURSOR,HNEWCURSOR); //把原光标储存起来以备以后的恢复end;procedure TForm1.Button1Click(Sender: TObject);begin HoldCursor:=SetClassLong(Form1.Handle,GCL_HCURSOR,HOLDCURSOR); Close; //在结束程序前一定不要忘记恢复光标end;end.呵呵,就这么就实现啦
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部