分享

使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(四)

 fq954 2007-05-08
可是当我们退出程序时却出现了程序已关闭的错误。

        我的天哪,怎么会这样呢,为什么我的程序不能正常退出呢,遗憾的是模拟器只提示了很简单的错误提示,并没有更详细的错误报告,我们可以通过在 C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\wins\c\System\Bootdata 下创建一个 ErrRd 的空文件以让模拟器显示详细的错误信息(请在相应的SDK目录下操作),此时我们再次运行模拟器打开HelloWorld并关闭它,现在是不是提示信息多了一点呢?

       模拟器报出了 ALLOC:17B18158 的错误,像这种类型的错误大多数情况下是因为我们使用了某个对象后忘记关闭它并释放此对象的内存导致的,为了保证程序的正常运行,我们要在使用一个对象后及时将它删除掉,于是我们定位到了HelloWorldContainer.cpp的~CHelloWorldContainer (析构函数) 中 输入以下代码
 
 delete iImage;

    当我们再次编译运行程序后,就不会再出现那讨厌的出错对话框了。

 

5.让我们添加一些功能
 
 我们已经实现了在程序里显示位图的功能了,接下来我们将实现一个登陆框的功能,到时将会用到资源文件。

5.1 为菜单添加项目
 打开 HelloWorld.loc 文件,定义菜单的文本
 
 #define qtn_view1_login_item "Login"

 打开HelloWorld.hrh ,修改THelloWorldCommandIds 的枚举定义,改成以下
 enum THelloWorldCommandIds
 {
     EHelloWorldCmdAppTest = 1,
     EHelloWorldCmdLogin
  };

 EHelloWorldCmdLogin其实就是对应了菜单项 "Login"

 程序的菜单资源定义在了 HelloWorld.rss 文件中,我们打开这个文件,找到以下的定义
 
RESOURCE MENU_PANE r_helloworld_app_menu
    {
    items =
        {
        MENU_ITEM { command = EHelloWorldCmdAppTest; txt = qtn_appl_option_item; },
        MENU_ITEM { command = EAknCmdExit; txt = qtn_appl_exit; }
        };
    }

 把EHelloWorldCmdAppTest 替换成EHelloWorldCmdLogin,再把qtn_appl_option_item替换成qtn_view1_login_item ,这样我们就把程序选项菜单的第一项替换成 "Login" 了。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多