关于图标和光标资源的使用

作者:潇潇  出处:www.j2mefans.com
该文章为本站原创,如有引用,请注明出处和作者


关于图标的使用,可以使用在两个方面:一个是在应用程序的左上角,另一个是在应用程序的显示图标上(不要使用熊猫啊,否则可能很多人都不敢用你的程序了。呵呵)
如果使用VC++6中的资源编辑器的话,我们可能会发现默认的图标大小都是32*32像素的。当然我们也可以使用16*16像素的。以及64*64像素的。在资源管理器中看到的应用程序得这几种大小的图标。一般情况下,我们只要作一个32*32大小的图标就可以放大或缩小使用了。
下面我们看一下怎样添加图标资源:
对于汇编来说比较简单。
1、首先我们要使用工具绘制一个32*32大小的图标,并保存为.ICO格式的文件。假如我们在这里做了一个名为Main.ico的图标。
2、然后我们需要建立一个后缀名为.RC的资源脚本。假设命名为test.RC。我们可以使用文本编辑器(如记事本)打开在其中添加下面代码:
#define    IDI_ICON            0x1000
IDI_ICON        icon     "Main.ico"
当然IDI_ICON 可以使用数字0x1000代替直接写成下面的格式:
0x1000   icon     "Main.ico"
需要说明的是这个数值是可以任意指定的。
如果仅仅给应用程序的外观包装一下的话,我们在编译完源文件后,我们也要将资源进行编译,方法是使用rc命令来编译上面的资源脚本:
rc test.rc
这样就可以生成一个同名的后缀为.res的文件,在这里就是test.res。
3、最后可以使用下面的方法进行连接:
 Link /subsystem:windows test.obj test.res
这里我们假设我们的原文件被编译为test.obj的目标文件。

但是往往我们也会将程序的左上角图标进行变换。这样我们就必须进行下面的步骤:
1、    同上面先要建立一个图标资源。名为Small.ico(在这里使用了罗云彬的例子)。
2、建立并编辑资源脚本:
#define    ICO_SMALL        0x1001

ICO_SMALL    ICON        "Small.ico"

3、在汇编文件中也要进行常量的定义:
ICO_SMALL    equ        1001h

4、在变量定义段中定义下面代码:
.data?
……
hIcoSmall    dd        ?

5、这样我们在程序中使用LoadIcon函数进行加载,并将句柄保存。
invoke    LoadIcon,hInstance,ICO_SMALL
mov    hIcoSmall,eax
当然也可以在定义窗口类时使用:
invoke    LoadCursor,0, ICO_SMALL
mov    @stWndClass.hCursor,eax

6、最后别忘了要编译资源脚本,和连接资源。

对于光标的使用方法通上,只是后缀为.cur,并且载入函数要使用LoadCursor。

当然还有一种方法我们不用使用资源脚本文件就可以使用自定义光标,只需要添加资源,然后再源代码中定义一个同资源名相同的字符串,如下:
szCursorFile    db    'CURSOR.CUR',0
然后我们就可以使用
invoke     LoadCursorFromFile,addr szCursorFile
mov    hCur1,eax


对于vc++来说除了使用上面的方法外,也可以使用字符串命名的图标文件。
要想通过字符串名来装载一个图标,按下面步骤进行:
  在.RC文件中加入:
  your_icon_name ICON filename.ico
  在程序代码中使用下面代码:
  //Notice the use of hinstance instead of NULL。
  Winclass.hIcon = LoadIcon(hinstance,"your_icon_name");
  Winclass.hIconSm = LoadIcon(hinstance,"your_icon_name)";

但是我在masm中编译源文件,和资源文件,甚至连接成可执行文件都媒体是错误,不过出不来效果。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值