`
totoxian
  • 浏览: 1073923 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Symbian开发笔记(一)

阅读更多

CTest_1AppUi::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{
case EAknSoftkeyBack:
case EEikCmdExit:
{

_LIT(KQueryDelete,"Are you sure to delete it?");
CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(const_cast<TDesC&>(KQueryDelete()),CAknQueryDialog::EWarningTone);
dlg->ExecuteLD(R_DIALOG_DELETE_QUERY);
break;
}
case ETest_1CmdAppTest:
{
// Info message shown only in the emulator
iEikonEnv->InfoMsg(_L("test"));

// Load localized message from the resource file
HBufC* message = CEikonEnv::Static()->AllocReadResourceLC(R_MESSAGE_TEXT);

// Show information note dialog
CAknInformationNote* note = new (ELeave) CAknInformationNote;


note->ExecuteLD(message->Des());
CleanupStack::PopAndDestroy(message);
break;
}
// TODO: Add Your command handling code here

default:
break;
}

这里面有几个知识点:

1:_LIT()宏所定义的常量并不是描述符,但可以通过使用一个重载的运算符()将其转换为const TDesC&类型的描述符。

2:CAknQueryDialog的第一个参数需要一个TDesC&类型的参数,所以我们需要把KQueryDelete()强制转换成非const类型的,这需要使用C++中的强制类型转换const_cast<TDesC&>。

3:千万注意要把const_cast<TDesC&>所接的数据加上()。

void CTest_1AppUi::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{
case EAknSoftkeyBack:
case EEikCmdExit:
{
_LIT(KQueryDelete,"Are you sure to delete it?");
CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(const_cast<TDesC&>(KQueryDelete()),CAknQueryDialog::EWarningTone);


TInt temp = dlg->ExecuteLD(R_DIALOG_DELETE_QUERY);


_LIT(KReturnValue,"the return value is :");

HBufC* iBuf = HBufC::NewLC(100);
iBuf->Des().Copy(KReturnValue);
iBuf->Des().AppendNum(temp);
CEikonEnv::Static()->InfoMsg(*iBuf);
CleanupStack::PopAndDestroy(iBuf);
break;
}

default:
break;
}
}

从程序执行中我们可以看到,当我们点dlg的NO按钮时,temp的值为一个正数(程序中是3005),而当我们点dlg 的OK的时候,temp的值为0。

所以我们在很多程序中可以看到类似下面的代码:

if(dlg->ExecuteLD(R_DIALOG_DELETE_QUERY))
{
TInt index = iListBox->CurrentItemIndex();
TName name(db.iName);
iUi->iDB->iArrayDB->Delete(index);
iUi->iDB->SaveDBL();
CEikonEnv::Static()->ReadResource(info, R_STR_DELETE_TIPS);
tips.Format(info, &name);
ShowNotify(tips);
if(iUi->iDB->iArrayDB->Count()==0)
{
CEikonEnv::Static()->ReadResource(info, R_STR_NO_CD_TIPS);
ShowNotify(info);
CreateFunctionListBoxL();
}
else
{
CreateRecordListBoxL();
}
}

也就是判断我们是否点击了Dialog的OK按钮。

RESOURCE LOCALISABLE_APP_INFO r_httpenginetest_localisable_app_info
{
short_caption = "HttpEngine";
caption_and_icon =
CAPTION_AND_ICON_INFO
{
caption = "HttpEngineTest";
number_of_icons = 2;
icon_file = "\\resource\\apps\\HttpEngineTestaif.mbm";
};
}

RESOURCE RSS_SIGNATURE {}

RESOURCE TBUF { buf=""; }

RESOURCE EIK_APP_INFO
{
menubar = r_httpenginetest_menubar;
cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
}

这样写会报告“系统错误”并看不到应用程序的icon,看来签名、文档名缓冲还是要放前面,如下:

RESOURCE RSS_SIGNATURE {}

RESOURCE TBUF { buf=""; }

RESOURCE LOCALISABLE_APP_INFO r_httpenginetest_localisable_app_info
{
short_caption = "HttpEngine";
caption_and_icon =
CAPTION_AND_ICON_INFO
{
caption = "HttpEngineTest";
number_of_icons = 2;
icon_file = "\\resource\\apps\\HttpEngineTestaif.mbm";
};
}

RESOURCE EIK_APP_INFO
{
menubar = r_httpenginetest_menubar;
cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
}

其实上面这样改,在程序运行到BaseConstructL(EAknEnableSkin)时会报告“User 23”系统错误,原因是我们把LOCALISABLE_APP_INFO放到了EIK_APP_INFO前面去了,应该像下面这样改:

NAME MHWA

#include <eikon.rh>
#include <avkon.rsg>
#include <avkon.rh>
#include <avkon.mbg>
#include <appinfo.rh>

RESOURCE RSS_SIGNATURE {}

RESOURCE TBUF r_default_document_name
{
buf="";
}

RESOURCE EIK_APP_INFO
{
menubar = r_httpenginetest_menubar;
cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
}

RESOURCE LOCALISABLE_APP_INFO r_httpenginetest_localisable_app_info
{
short_caption = "HttpEngine";
caption_and_icon =
CAPTION_AND_ICON_INFO
{
caption = "HttpEngineTest";
number_of_icons = 2;
icon_file = "\\resource\\apps\\HttpEngineTestaif.mbm";
};
}

分享到:
评论

相关推荐

    symbian学习笔记(超级经典-适用于初学者)

    对于Symbian开发,通常使用 Carbide.c++ 这一集成开发环境(IDE),它提供了代码编辑、编译、调试等功能。安装Carbide.c++后,还需要安装SDK(软件开发工具包)和模拟器,以便在没有实际设备的情况下进行程序测试。 ...

    symbian学习笔记,全28讲

    【Symbian学习笔记概述】 Symbian操作系统是一款曾经广泛应用于智能手机的操作系统,尤其在诺基亚手机上占据主导地位。对于想要学习Symbian开发的初学者来说,理解其开发环境的搭建至关重要。本系列笔记共28讲,...

    真正的Symbian笔记.docx

    《真正的Symbian笔记》是一份详尽的文档,它深入浅出地介绍了Symbian操作系统的核心概念和技术细节。Symbian系统曾是智能手机领域的主导平台,尤其在诺基亚手机中广泛使用,因此这份笔记对于理解早期移动设备的操作...

    Symbian学习笔记

    这些"Symbian学习笔记"涵盖了关于该平台的广泛知识,包括系统架构、编程语言、开发环境以及应用构建等方面。 1. **Symbian系统架构**:Symbian采用微内核设计,由四个主要部分组成:实时操作系统内核(OS Kernel)...

    在Symbian S60系统上的语音笔记程序

    在Symbian S60系统上开发语音笔记程序是一个针对移动设备的有趣且实用的项目。这个程序允许用户通过手机录制语音片段,并将其保存为笔记,以便日后回顾或检索。以下是一些关于这个主题的关键知识点: 1. **Symbian...

    symbian 笔记

    开发者可以使用 Carbide.c++ 编译器进行开发,这是一个专门为Symbian优化的IDE。此外,还有EPOC Runtimes,允许在Symbian设备上运行其他语言编写的程序。 ### 三、Symbian系统版本 Symbian经历了多个版本的迭代,...

    symbian 数据库操作笔记

    在Symbian操作系统中,数据库管理是应用程序开发的重要部分,特别是在需要存储和检索大量数据时。Symbian OS 提供了Series 60平台上的本地数据库解决方案——RDBMS(Relational Database Management System),它是...

    Symbian学习笔记(中国移动开发者社区).pdf

    对于想要进行 Symbian 应用开发的开发者来说,搭建一个合适的开发环境是至关重要的第一步。 #### 1.1 开发工具的选择 - **Symbian SDK(Software Development Kit)**: 这是官方提供的软件开发包,包含了必要的...

    symbian 学习笔记

    Symbian是一款历史悠久的智能手机操作系统,尤其在2000年至2010年间,它是全球领先的移动设备操作系统,广泛应用于诺基亚等品牌的手机。Symbian以其强大的功能和高度的可定制性,赢得了开发者和用户的喜爱。本篇将...

    转:webkit开发学习笔记(全面)_第一版

    **WebKit 开发学习笔记概述** WebKit 是一个开源的网页内容渲染引擎,被广泛应用于各种浏览器,包括谷歌的 Chrome、苹果的 Safari、以及许多其他双核浏览器。WebKit 的诞生源自苹果公司在其 Mac OS X 操作系统中对 ...

    symbian坦克游戏源码

    【标题】"symbian坦克游戏源码"指的是在Symbian操作系统平台上开发的一款坦克游戏的源代码。Symbian是一种历史悠久的智能手机操作系统,广泛应用于早期的诺基亚手机,以其开源、可定制化和高效能著称。这个游戏源码...

    小糊涂学symbian日记pdf版

    总的来说,《小糊涂学Symbian日记》是一份全面且实用的学习资料,对于想要了解或投身于Symbian开发的初学者而言,这份笔记无疑是一个宝贵的资源,能够帮助他们在学习的道路上少走弯路,更好地掌握Symbian操作系统...

    移动终端学习笔记之Android(一)Android第一堂课

    1996年,微软开发Window CE系统,随后的2001年,Symbian S60面向消费者,2007年6月,ios登上历史舞台,2008年9月,Android这个憨憨的机器人悄然问世。 到如今,ios和Android占有了大部分的手机市场,昔日的巨头...

    Symbian S60实例代码

    在本文中,我们将深入探讨与"Symbian S60实例代码"相关的知识,这是一个针对Symbian操作系统S60平台的编程实践。Symbian是一个经典的移动操作系统,曾广泛应用于诺基亚等早期智能手机,而S60是其上一个流行的用户...

    symbian资料打包下载

    Symbian OS C++程序员编码诀窍.pdf symbian 开发过程.pdf symbian 入门篇.doc symbian+开发讲义.pdf symbian编码标准.pdf Symbian程序编码规范.pdf symbian实例教程.pdf Symbian学习笔记.pdf

    basic_python_symbian_60.rar_python_symbian

    Symbian操作系统曾经是智能手机领域的一个重要平台,而Python作为轻量级的解释型语言,为开发者提供了一种便捷的方式来开发Symbian设备上的应用程序。 标题"basic_python_symbian_60.rar_python_symbian"暗示了这个...

    android app笔记

    - **市场份额增长**:2011年第一季度,Android在全球的市场份额首次超过了塞班系统,成为全球第一大操作系统。截至2013年第四季度,Android平台手机的全球市场份额达到了78.1%。 #### 二、核心概念 ##### Activity...

    21简单GUI编程1 张锦锋Symbian讲座

    【标题】"21简单GUI编程1 张锦锋Symbian讲座"涉及的是一个关于图形用户界面(GUI)编程的教程,由张锦锋主讲,专注于Symbian操作系统平台。Symbian是一个曾经广泛应用于智能手机的操作系统,特别是在早期智能手机...

Global site tag (gtag.js) - Google Analytics