使用 ANI 动画光标(50分)

  • 主题发起人 主题发起人 question
  • 开始时间 开始时间
Q

question

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序中使用动画光标 (*.ANI)?及程序中的光标是动画光标<br>类似使用了 Win98 桌面布景后的鼠标状态.<br>要能在 Delphi 4 下运行的.<br>Tnank you!
 
去看rxlib里的例子!有原玛
 
LoadCursorFromFile('.../?.ani')装载即可<br>至于达到桌面布景效果,要将系统icon替换。
 
var<br>&nbsp; Save_Cursor:TCursor;<br><br>const<br>&nbsp; crMyCursor = 1;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp; Screen.Cursors[crMyCursor]:=LoadCursorFromFile('Horse.ani');<br>end;<br><br>procedure TForm1.BitBtn1Click(Sender: TObject);<br>Begin<br>&nbsp; BitBtn1.Cursor:=crMyCursor; &nbsp;//可以马上发生变化<br>&nbsp; Save_Cursor := Screen.Cursors[crSQLWait];<br>&nbsp; Screen.Cursors[crSQLWait]:=crMyCursor;<br>&nbsp; try<br>&nbsp; &nbsp; ......<br>&nbsp; finally<br>&nbsp; &nbsp; BitBtn1.Cursor :=crDefault; &nbsp;{ Always restore to normal }<br>&nbsp; &nbsp; Screen.Cursors[crSQLWait]:= Save_Cursor;<br>&nbsp; end;<br>end;<br>
 
忘了说,这是用于时间比较长的SQL查询时,把沙漏光标变成动态的奔马.
 
我需要从资源文件中读 ANI 信息<br>不是一个ANI 文件中<br>即先将 ANI 编译到 RES 文件中,后在程序中引用。
 
运行时先把resource中的动画光标存成一个临时ani文件再用loadcursorfromfile不就成了?
 
TO Another_eYes:<br>那样不妥,我想得到的结果就和从资源文件中读普通光标一样的效果,<br>及使用<br>Screen.Cursors[1]:=LoadCursor(HInstance,ctANI,'AAA');<br>类似的语句,同时我的资源文件的编写如下:<br>ANIRES.RC<br>AAA RCDATA "AAA.ANI"<br>BBB RCDATA "BBB.ANI"<br>CCC RCDATA "CCC.ANI"<br><br>有方法解决吗?最好能给出函数。
 
我用了一个急丑陋的方法解决了这个问题,我吃玩放再试一下,有没有更好的方法。
 
我想了半天,还是没有更好的办法,只能把我的办法贴出来,抛砖引玉吧~-~!<br>首先用 Screen.Cursors[1]:=LoadCursor(HInstance,'AAA');是不可以的,<br>因为资源文件中只能定义成:<br>AAA RCDATA "AAA.ANI"<br>而非:<br>AAA CURSOR "AAA.ANI"<br>我的解决办法如下:<br><br>procedure TForm1.Button2Click(Sender: TObject);<br>var<br>&nbsp; resstrm :TResourceStream;<br>&nbsp; fname &nbsp; :string;<br>begin<br>&nbsp; fname := ExtractFilePath(paramstr(0))+'tmp.ani';<br>&nbsp; resstrm := TResourceStream.Create(Hinstance,'AAA',RT_RCDATA); //!!!<br>&nbsp; resstrm.SaveToFile(fname);<br>&nbsp; Screen.Cursors[crMyAni] :=LoadCursorFromFile('tmp.ani');<br>&nbsp; panel3.Cursor := crMyAni;<br>&nbsp; DeleteFile(fname);<br>&nbsp; resstrm.Free;<br>end;<br><br>这种方法是肯定能用的,就是比较难看! :-(
 
公子, 人家说了文件方法不妥(我也不知道不妥在哪里).
 
谢谢各位,既然没有更好的方法,只有结束问题了<br>Sigh
 
多人接受答案了。
 
后退
顶部