您的位置:首页 > 其它

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

2009-06-11 18:25 357 查看
原文地址: http://www.360doc.com/content/070508/09/13049_487940.html


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



我的天哪,怎么会这样呢,为什么我的程序不能正常退出呢,遗憾的是模拟器只提示了很简单的错误提示,并没有更详细的错误报告,我们可以通过在 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" 了。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: