Symbian中使用位图

1。Symbian OS支持的是.bmp的图形文件,即位图文件。对于位图文件,Symbian建议把所有的位图都打包进一种扩展名为*.mbm的文件里面,*.mbm 其实是一种位图集文件,里面可以包含很多的位图。类似,J2me里面把所有的图片都压成一个资源文件。但是Symbian在读取的时候要简单方便的多。
    2。那么怎样才能把.bmp的图片(一张或多张)制作成.mbm的呢?Nokia SDK里面自带了一个工具叫BMCONV。要到命令提示符下面,然后进到你存放.bmp的文件夹下面,比如今天我就把一个叫menu.bmp的文件转换成了menu.mbm输入的以下命令:
   bmconv /hmenu.mbg menu.mbm /c12memu.bmp
    其实命令的前半部分(/hmenu.mbg)是在同一个目录下面生成了一个叫menu.mbg的文件(用途后面详述)。紧接着的一段(menu.mbm)是生成一个叫menu.mbm的文件。也就是所这段命令的意思用menu.bmp来生成上述两个文件。其中的“/c12”的意思是图像用12色来保存。(此过程是可逆的。也就是可以有.mbm文件来生成.bmp的,也就是说“扣”别人的图很方便的!那些汉化的人,就是这么搞得!!!)
    3。说一下刚刚生成的那个mbg文件是干什么的:用记事本打开该文件会看到如下内容:
// menu.mbg
// Generated by BitmapCompiler
// Copyright (c) 1998-2000 Symbian Ltd.  All rights reserved.
//
enum TMbmMenu
 {
 EMbmMenuMenu
 };
这个枚举类型TMbmMenu就是我们的项目的位图定义了,刚才我们添加进.mbm文件的那个menu.bmp的位图文件在程序中就对应着EMbmMenuMenu!!!
    4。这两个文件生成后,放到什么地方去呢?
       先说menu.mbm要把它放到C:\Symbian\6.1\Series60\Epoc32\Release\wins\udeb\z\system\apps\SHIPS\。注意,在打包成sis时,在项目的.pkg文件中也要记得做相应的修改。
       至于那个menu.mbg文件,一定要放到你的项目文件的group目录下,也就是跟你的.mmp文件在一起,我的是在:C:\Work\Ships\group\。否则在项目连接时会报错说找不到相应的文件。
    5。下面就开始写程序。代码贴一下:
     在ShipsContainer.h中添加:
     #include "menu.mbg"
     _LIT(KMbmFileName,"menu.mbm");
     和成员变量:CFbsBitmap* iImage;
     在ShipsContainer.cpp的ConstructL函数中添加:
     TFileName fullName(KMbmFileName);
     CompleteWithAppPath(fullName);//自动为文件名添加文件路径
     iImage = new (ELeave) CFbsBitmap();
     User::LeaveIfError(iImage->Load(fullName,EMbmMenuMenu));
    6。按道理说这样就结束了。但是在连接时会有4个错误!Debug的话,会找到这个错误就出现在iImage = new (ELeave) CFbsBitmap();这句上。原因就是少了一个叫fbscli.lib的连接文件。怎么添加呢???
    7。要添加这个文件如果是在VS.net下方法很简单。据说是在项目资源管理器中右击项目->属性->配置属性->链接器->命令行,在右边的附加选项中输入fbscli.lib再次编译,就OK了。但是在VC6中,事情就不那么简单了。
      问了个前辈,才终于摸索出怎么解决。就是,要在工程的.mmp文件中添加这个fbscli.lib具体代码如下:
LIBRARY euser.lib apparc.lib cone.lib eikcore.lib
LIBRARY eikcoctl.lib avkon.lib fbscli.lib
       也就是在原有的.lib的基础上再添加一个。
       然后,关掉VC6,打开命令提示行,进入你的工程目录的group目录下,输入以下两行命令:
       bldmake bldfiles
       abld makefile vc6  这两行命令并不陌生,正是在把项目从一台机器转移到另外一台机器时所需的操作。其作用就是从新生成一个VC6的工程文件。
       然后到目录C:\Symbian\6.1\Series60\Epoc32\BUILD\WORK\SHIPS\GROUP\SHIPS\WINS\双击那个SHIPS.DSW从新打开VC6。再编译,就没有任何问题了!!!
    8。最后的最后(也就是C与java的区别)别忘了在 ShipsContainer的析构函数里面把成员变量统统delete掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值