说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中使用自定义光标

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中使用自定义光标

开发者都希望自己的程序有一个友好的界面,此时,一个生动活泼、有表现力的光标就必不可少了。Windows 缺省提供22种标准光标供在程序中调用,但对一个求新求变的程序员来说,标准光标就不能满足要求了,需要使用自己的光标,那么,在程序中怎样使用自己的光标呢?

●光标资源的获得

要使用自定义光标,必须先得到这些光标。光标文件有两种:静态光标(.cur)和动态光标(.ani)。你可以使用现成的光标文件,比如Delphi 自带的一组光标文件(在C:Program FilesBorlandDelphi 3ImagesCursors目录中),如果你安装了Windows98的桌面主题,则可在Windowsplus! 目录下找到许多光标文件。你也可以自己创建光标文件,比如使用Delphi自带的Image Editor 就可创建静态光标文件

(.cur),但Image Editor不能创建彩色光标,要创建彩色光标,必须使用其它工具,如Vc++ 的资源编辑器。动态光标则必须使用专门的工具软件制作,使用动态光标可达到光标的动画效果,动态光标文件的文件结构与AVI文件结构相似,由文字描述区、信息区、时间控制区、数据区四部分构成。Windows通过按文件时间控制区中指定的时间一帧帧播放文件数据区中包含的光标或图标图像来实现动画效果。

其实,分析文件结构可以发现,静态光标文件(.cur)与图标文件(.ico)结构非常类似,两种文件的主要差别仅在于文件头的文件识别码和是否存在跟踪点(Hot Spot)。文件识别码放在文件的头三个字节,图标文件为00 00 01,光标文件为00 00 02;图标文件没有跟踪点,光标文件的跟踪点信息放在文件的00 0A-00 0D 四个字节中,00 0A - 00 0B记录跟踪点的X 坐标,00 0C-00 0D 记录Y 坐标,记录顺序都是高位

在前,低位在后,图标文件的00 0A-00 0D 为保留位。知道了两者的差异,你就可以通过手工或编一个小程序来实现图标文件到光标文件的转换。相对于光标文件来说,图标文件要好找得多,颜色上也更丰富。

除了光标文件外,你也可以创建资源文件(.res )

在资源文件中包含光标资源

Delphi 同样可在程序中调用。可使用Image Editor 或Microsoft的资源编辑器创建资源文件(推荐使用Vc++的资源编辑器)。Delphi 缺省为每一个项目创建一个与项目名同名的资源文件,如你的项目名为test.dpr ,则资源文件名为test.res。但你如果把光标放在这个文件中,在程序中是无法调用的,必须创建自己的资源文件。在给光标资源命名时注意不要与已有的资源重名,创建好后,再在程序中使用编译指令$R将资源文件加在程序中,如资源文件为my.res

则在主窗体的Implementation下加上一行{$R my.res} 就可以了。

●自定义光标在程序中的使用

Delphi 使用自定义光标是通过调用Windows的API函数实现的。Delphi的Screen对象定义有一个Cursors 属性,属性声明为Property Cursors[Index:Interger]:Hcursor;Cursors属性实际记录了应用程序中使用的全部光标资源的句柄,Index 为每项资源的索引号。Delphi缺省提供的22种光标资源也在其中,Index值为-21~0。要使用自己的光标,首先可调用API函数 Loadcursorfromfile(对于光标文件)或使用Loadcursor(对于资源文件)获得相应光标的句柄,这两个函数都定义在Windows单元中,函数声明为:

Function LoadCursorFromFile(lpFileName:PAnsiChar):HCURSOR;stdcall;

//lpFilename为光标文件名。(两种光标都适用,只需具体指定光标文件名就可以

了。)

Function LoadCursor(hInstance: HINST; lpCursorName: PAnsiChar): HCURSOR;

stdcall;

//hInstance为应用程序的句柄,lpCursorName为光标资源的名字。在资源文件中只能包含静态光标资源,资源文件不支持动态光标这种格式的资源。两个函数的详细说明可参考Delphi的Win32帮助。

得到光标的句柄后,将这个句柄值添加到Cursors数组中,注意Index不要与已有的索引号重复,否则将覆盖已有的光标。要使用这个光标时,只要将该光标的Index赋值给元件的Cursor属性就可以了,Delphi根据这个索引号查找Cursors数组,找到该光标的句柄,并用Setcursor函数将这个句柄赋给元件。需要指出的是,程序结束时,不必调用Deletecursor函数释放光标资源,Delphi会自动释放它们。

●程序示例

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs;

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

{$R my.res}//加载资源文件my.res

procedure TForm1.FormCreate(Sender: TObject);

const

crmy1=1;

crmy2=2;

crmy3=3;

var

result1

result2

result3:integer;

begin

result1:=loadcursorfromfile(′my.cur′);

if result1<>0 then //如果返回值为0,则调用失败!

screen.cursors[crmy1]:=result1

else

showmessage(′加载静态光标文件出错!′);

result2:=loadcursorfromfile(′my.ani′);

if result2<>0 then

screen.cursors[crmy2]:=result2

else

showmessage(′加载动态光标文件错误!′);

result3:=loadcursor(Hinstance

′mycursor′);

Hinstance为定义在System单元中的一个长整变量,其值为应用程序的句柄,由Delphi自己维护。

在加载资源文件的光标资源时,如果光标的名字为整数(Vc++的资源编辑器给资源的缺省名就为整数),就必须使用API函数Makeintresource将整数转换为PansiChar类型,再传递给Loadcursor函数。

例如:result:=Loadcursor(Hinstance

Makeintresource(101))}

if result3<>0 then

screen.cursors[crmy3]:=result3

else

showmessage(′加载资源文件中的光标资源出错!′);

//使用加载的光标,cursors[]数组为全局变量,可在程序的任何地方调用;

if result1<>0 then

screen.cursor:=crmy1;

if result2<>0 then

form1.cursor:=crmy2;

if result3<>0 then

screen.cursor:=crmy3;

end;

end.

程序在Windows95

Delphi3.0中调试通过。

将立体的ListView标题栏转换成平面式的标题栏 -VB资料 禁用窗体上所有控件 -VB资料 拷贝或移动列表框或组合框中的内容-VB资料 利用VB5开发ActiveX控件 利用VB三维面板控件设计流动条 浅谈用VB6.0编写BO程序 巧用Visual Basic的TIMER控件 VB取得控件绝对Top值 VB如何解决VB中的Grid 控件的打印问题 VB如果自定义 MsgBox 的按钮,标题等 VB如何创建数据绑定控件。 VB如何解决VB中的Grid控件的打印问题 VB如何强制文件对话框再次读取正确的磁盘? VB如何取得RichTextBox控件中光标所在行的值? VB如何设定 MsgBox 在若干时间之后若无回应則自动关闭? VB如何使用VB控件Commom Dialog VB如何用VB6写COM组件(二) VB如何用VB6写COM组件(一) VB如何在VB中使用Delphi的控件 VB如何在运行时动态增加控件 显示和隐藏鼠标-VB资料 VB用ActiveX Control Pad VB用API函数改进ListView 控件的显示效果 用VB6.0中文版进行DHTML程序开发 用VB编写标准CGI程序 用VB编写留言板 用VB播放FLASH动画 用VB开发进程管理软件 VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 TNMUDP问题:怎样才能知道RemoteHost连接失败??? 谁有CuteFTP Pro2.0注册码?谢谢 如何进行DropDownList绑定,谢谢! 请问一个CString的问题 那个168查分台太可恶了 WIN98与WIN2000共享一个OFFICE??? 网络连接怎么检测 能把IE浏览器最大吗?俺指的是把右上最大按钮最大化? 怎么判断表单传送的整数中不能有字符,谢谢!!! 如何把我写好的说明书放到我VC++应用程序的帮助文件中? 求最容易理解,最容易上手的数据库书籍,各位老大请指教,谢谢!! 快!快快!!来拿分呀!!!!!!!!一个简单问题。 WIN98与WIN2000共享一个OFFICE 2000??? 在Servlet中如何使用JavaBean(调用其中的方法)?主要是格式!如果网上有这方面的资料也可以告诉我,我急用,不胜感激!40分送上!(只有这些了) 请问各位:怎样才能知道某一个进程所占用的cpu比例,mem大小? 请问在恢复sql 7.0一个数据库文件时,出现Error 3624:这是什么意思?? 关于程序员考试 哪位知道怎么一行一行地读取文本文件呀!!!! 谁知道的,来帮我一下——有关网页浏览计时的问题 如何将数字变为字符串格式化输出? Websphere下使用连接池的一些问题 TNMUDP问题:怎样才能知道RemoteHost连接失败 ? 算法请教,我要调整一副黑白数字图的浓度,我是用直方图的方法好呢,还是先转成HLS在转回来好?若都不对,应该怎么做? 如何 在ASP中用ping 一个小问题 请用javascript VC++6是98年才出来的,为什么没有最新的ADO原生驱动,而通过ODBC的话速度太慢; 多媒体 谁有MPEG-4的资料! 如何实现类似资源管理器的分隔条 我是菜鸟,请教各位GG,MM?????? 我的计算字段怎么老要计算,而且经常有死循环,到底该注意些什么,在哪里控制? 如何取消鼠标右键菜单和使shift功能键无效?(紧急) 一个非常非常简单的一个问题 如何安装Jbuilder 5.0 ? 多媒体技术 chr(176)有什么用? 如何将3DMAX图片在vb窗口中显示 各位大侠,怎样取得复合数据窗口里面的嵌套表的Label名。 一个关于访问数据库很菜的问题 请教小波分解与重构,模极大值算法。 哪儿能找到com.ms.xml.*包? 动态类型判别 是怎么实现的,谁有小型模拟代码? 让程序自启动都有哪几种方式呀!各位发表发表吧!!!! sqlserver恢复问题! 有关STL的文章! 很简单的问题,送份啦!!! 求一个字符在字符串中的位置!? ********DBGrid和ADO怎样连接********* 在JBuilder 5.0中,我打开一个单独的java文件,怎么编译和运行他?用命令行方式是可以的 简单问题,applet??? 都说抽象类不能实例化,可是请看下面例子:(请大虾们解释) 已知某铁路桥长500米,现有一列火车从桥上通过,测的火车从开始上翘到完全过桥共用30秒,而整列火车完全在桥上时间为20秒,求火车的速度及火车的长 用列方程形式 质量均为m的A,B两物块一起沿光滑的斜面下滑,则B对A的摩擦力 A.mgsinα B μmgcosα 已知 铁氧元素质量比为七比三 求这种物质化学式 思路) 物理摩擦力的题在一次火警军事演习中,消防战士双手握住竖直的铁杆匀速攀上12m高的楼台,完成指令后又沿铁杆匀速滑下,消防战士受到铁杆的摩擦力分别记为f1和f2,那么f1f2的方向如何 两个人要一直将质量m=1000kg的小车沿一较长的水平轨道推上长为L=5m,高h=1m的斜坡轨道顶端,小车在任何情况下所受的所有阻力恒为车重的0.12倍,两人的最大推力各为800N,两个人一直都用最大的 如题:少量在人体胃中帮助消化的物质的化学式是什么? 2CH3CH2OH+O2→2CH3CHO+2H2O和CH4+2O2→CO2+2H2O那个是取代反应请想好了再答 两个人要将质量M=1000kg的小车沿一小型铁轨推上长L=5m,高h=1m的斜坡顶端,如图所示.已知车在任何情况下所受的摩擦阻力恒为车重的0.12倍,两人能发挥的最大推力各为800N.在不允许使用别的工具 汽车在平直公路上行驶,在第1min内平均速度为5m/s,第2,3min内平均速度为6m/s,第4min内的平均速度为10m/s,第5min内的平均速度为13m/s,则汽车在这5min内的平均速度是__m/s 已知:2H20(I)反应生成2H2(g)+O2(g)-571.6KJ,CH4(g)+2O2(g)反应生成2H2O(I)+CO2(g)+890.3KJ.则1g氢气和1g甲烷分别燃烧后,放出的热量之约是(   )A.1:3.4      B.1:1.7      C.2.6:1 D.4.6:1 两个人要将质量M=1000kg的一箱货物装进离地高1m的卡车车厢内,他们找到了一个长为5m的斜面,但是没有其他更多可借助的工具.假设货物在平地、斜面上所受的摩擦阻力恒为货物重力的0.12倍,两 沉思怎么造句?80字 已知某铁路桥长500米,现在一列火车通过该桥,火车从开始上桥到过完桥共用了30秒钟,整列火车完全在桥上的 两个人要将质量M=1000KG的小车沿一小型铁轨推 化学式中各种组成部分是什么意思? 已知某铁路桥长500米,现一列火车通过该桥,火车从开始上桥到过完桥共用了30秒钟,整列火车完全在桥上的时间为20秒,球火车的长度与速度 平衡摩擦力后,平衡摩擦力,小车在木板上的受力应有F+mgsinθ-μmgcosθ=ma,其中F为绳的拉力,θ为木板与水平面之间的倾角.能不能画图描述一下小车在木板上的受力分析,还有μmgcosθ是什么力 [化学]这些物质的化学式或组成成分是什么?明矾 胆矾 绿矾 碱石灰 天然气 漂白粉 铝热剂 大理石 小苏大 苏大 大苏大 石灰乳 生石灰 已知反应2CO=O和CH4+2O2=2H2O+CO2通过计算说明等质量的一氧化碳和甲烷完全燃烧 可是摩擦力不是F=uN么,车速为什么有和摩擦力有关了? 大便在人的身体什么位置 摩擦力在做加速运动时有变化吗匀速运动的物体,摩擦力的大小与速度无关那么如果不是匀速呢 天然气,液化气,与空气的最佳燃烧配比是多少,怎么计算的,是不是气压也会影响配比如果气压影响的话那在气压变化的情况下要怎么计算 大便的主要成分是什么?有人有做过专门性的研究吗? 变速运动摩擦力怎么变化 天然气与空气如何配比使之爆炸 蛋鸡粪便有些什么主要成分 物体加速运动时,摩擦力是怎样改变的?那它本来是在做匀速运动,摩擦力与物体向前的 力抵消,他加速时,若摩擦力不变,那摩擦力不就永远小于物体向前的力了,如果还要以加速后的速度 (两种方法解答)一辆质量为m=1000kg,速度为v0=10m/s,关闭发动机后在水平地面上滑行了距离L=5m后停了下来,试求汽车受到的阻力.两种方法. 婴儿大便如何来的?主要成分是哪些婴儿刚刚出生的时候,不吃饭却拉屎,那大便怎么这么多呢? 2H2+O2=2H2O2H2=多少浓度?O2=多少浓度?2H2O=多少浓度?氧气和氢气的比例是多少才能燃烧?氧气:多少氢气:多少 因参与人体新陈代谢而消耗的气体是_______(填化学式)谢谢了! 一辆汽车总质量为1150kg,以72km/h的速度匀速行驶10km,若汽车所受阻力为汽车重力的10%,每个轮胎与路面的接触面积为0.05m²(g取10N/kg)求汽车功率若该汽车热机的效率为25%,如果不考虑热机其 高一物理学中摩擦力使物块运动但它为什么会运动啊?一个物块A在物块B上,B物块在一个光滑水平面上,若此时给物块B一个大小为F的推力且A与B之间的静摩擦力大于F,把它们看做一个整体,据F=ma 人体中含有的酸,要化学式 一辆质量为4吨的汽车在平直公路上匀速直线行驶,汽车所受阻力是汽车所受重力的0.03 倍求:汽车发动机的牵引力大小. 4.有一座铁路桥长1000米,一列火车从桥上通过,测得火车从开始上桥到完全下桥共用120秒,整列火车完全在桥上的时间是80秒,这列火车的速度和长度分别是多少? ..有关摩擦力的..如图所示,两物体A、B叠放在水平面上,在外力作用下(外力作用在B上)一起作匀速直线运动.若A、B间的滑动摩擦系数为μ1,B和地面间的滑动摩擦系数为μ2,则μ1、μ2可能是 答案 关于人体生长激素的化学式? 已知某铁路桥长1000米,一列火车从桥上通过,测得火车从上桥到完全下桥共用120秒,整列火车完全在桥上时间为80秒,火车长多少米,每秒行多少米?不要方程!要算式! 人在电梯(一种是像楼梯一样的,一种是一个斜面)上受到哪几个力 能构成人体蛋白质的氨基酸化学式有八种,甲氨酸,缬氨酸,赖氨酸,异丙氨酸,本氨酸,亮氨酸,色氨酸,苏氨酸 求化学式…………! 关于摩擦力的物理题小刚和小明探究摩擦力大小和什么因素有关时,小刚用手通过弹簧测力计匀速拉动木块A,读出拉力即为木块A的滑动摩擦力.小明将弹簧测力计的一段固定,另一端勾住木块B, 有关摩擦力我国著名发明家邹德俊发明的“吸盘式” 挂衣钩如图,将它紧压在平整、清洁的竖直瓷砖墙面上时,可挂上衣帽等物品.如果挂衣钩的吸盘压紧时,它的圆面直径为3.18cm,吸盘圆面压在 用高耸,缓缓,沉思,造句 摩擦力物理题两块木板压一块木块,保持相对静止,要想把木块从上面和下面抽出至少需要多大的力? 要使静止在水平地面上重为3N的物体移动,至少需用0.7N的水平推力;物体移动后,只需加0.6N的水平推力,就可以维持其匀速运动.则物体与水平地面的动摩擦因数是____;物体与水平地面的最大静 小学三年级造句 沉思 物理摩擦力题用沿水平反向20N的力推重为100N的木箱在水平面上做匀速直线运动,木箱受到的摩擦力为多少? 化学方程式:2Mg=O2=点燃=2MgO给我们提供了哪些信息 用thoughtful来造句,单词的意思是沉思的. 摩擦力质量分别为M,m的滑块A、B叠放在固定的、倾斜角为θ的斜面上,A与斜面间、A与B之间的摩擦因数分别为μ1,μ2,当A、B从静止开始以相同加速度下滑时,B受到的摩擦力 为什么方向平行于斜面 化学方程式的读法为何要用份2H2+ O2 =(点燃)2H2O每4份质量的氢气跟32份质量的氧气反应生成36份质量的水我不理解其中份质量什么意思以及怎样得到 尼古丁的化学式为CxHyNz,其相对分子质量为162,其中氢约占8.7%,氮约占17.3%,则化学式中x=____,y=____乘出来不是小数吗? 已知某铁路桥长500米,现有一列火车通过该桥,火车从开始上桥到过完桥共用了30秒,整列火车完全在桥上的时间为20秒,求:火车的速度和火车的长度.用一元一次方程解题.请说明理由!要设火车 制作一个小车,在30cm高,60cm长的斜坡上滑下,至少要能滑5m远跪求答案……手工制作……目前只有木板和木条…… 什么物质占人体质量的三分之二? 已知某铁路桥长500米,现在一列火车通过该桥,火车从开始上桥到过完桥共用了30秒钟,整列火车完全在桥上的时间为20秒,则火车的长度是多少? 一个工人用200N的推力沿斜面把汽油桶推到汽车车厢上,若斜面长为5m,高为1m,不计摩擦,则推力做的功是多少汽油桶的重力为多少 已知 在某物质中铁氧元素质量比为七比三 求这种物质化学式 思路)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn