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开发,通常使用 Carbide.c++ 这一集成开发环境(IDE),它提供了代码编辑、编译、调试等功能。安装Carbide.c++后,还需要安装SDK(软件开发工具包)和模拟器,以便在没有实际设备的情况下进行程序测试。 ...
【Symbian学习笔记概述】 Symbian操作系统是一款曾经广泛应用于智能手机的操作系统,尤其在诺基亚手机上占据主导地位。对于想要学习Symbian开发的初学者来说,理解其开发环境的搭建至关重要。本系列笔记共28讲,...
《真正的Symbian笔记》是一份详尽的文档,它深入浅出地介绍了Symbian操作系统的核心概念和技术细节。Symbian系统曾是智能手机领域的主导平台,尤其在诺基亚手机中广泛使用,因此这份笔记对于理解早期移动设备的操作...
这些"Symbian学习笔记"涵盖了关于该平台的广泛知识,包括系统架构、编程语言、开发环境以及应用构建等方面。 1. **Symbian系统架构**:Symbian采用微内核设计,由四个主要部分组成:实时操作系统内核(OS Kernel)...
在Symbian S60系统上开发语音笔记程序是一个针对移动设备的有趣且实用的项目。这个程序允许用户通过手机录制语音片段,并将其保存为笔记,以便日后回顾或检索。以下是一些关于这个主题的关键知识点: 1. **Symbian...
开发者可以使用 Carbide.c++ 编译器进行开发,这是一个专门为Symbian优化的IDE。此外,还有EPOC Runtimes,允许在Symbian设备上运行其他语言编写的程序。 ### 三、Symbian系统版本 Symbian经历了多个版本的迭代,...
在Symbian操作系统中,数据库管理是应用程序开发的重要部分,特别是在需要存储和检索大量数据时。Symbian OS 提供了Series 60平台上的本地数据库解决方案——RDBMS(Relational Database Management System),它是...
对于想要进行 Symbian 应用开发的开发者来说,搭建一个合适的开发环境是至关重要的第一步。 #### 1.1 开发工具的选择 - **Symbian SDK(Software Development Kit)**: 这是官方提供的软件开发包,包含了必要的...
Symbian是一款历史悠久的智能手机操作系统,尤其在2000年至2010年间,它是全球领先的移动设备操作系统,广泛应用于诺基亚等品牌的手机。Symbian以其强大的功能和高度的可定制性,赢得了开发者和用户的喜爱。本篇将...
**WebKit 开发学习笔记概述** WebKit 是一个开源的网页内容渲染引擎,被广泛应用于各种浏览器,包括谷歌的 Chrome、苹果的 Safari、以及许多其他双核浏览器。WebKit 的诞生源自苹果公司在其 Mac OS X 操作系统中对 ...
【标题】"symbian坦克游戏源码"指的是在Symbian操作系统平台上开发的一款坦克游戏的源代码。Symbian是一种历史悠久的智能手机操作系统,广泛应用于早期的诺基亚手机,以其开源、可定制化和高效能著称。这个游戏源码...
总的来说,《小糊涂学Symbian日记》是一份全面且实用的学习资料,对于想要了解或投身于Symbian开发的初学者而言,这份笔记无疑是一个宝贵的资源,能够帮助他们在学习的道路上少走弯路,更好地掌握Symbian操作系统...
1996年,微软开发Window CE系统,随后的2001年,Symbian S60面向消费者,2007年6月,ios登上历史舞台,2008年9月,Android这个憨憨的机器人悄然问世。 到如今,ios和Android占有了大部分的手机市场,昔日的巨头...
在本文中,我们将深入探讨与"Symbian S60实例代码"相关的知识,这是一个针对Symbian操作系统S60平台的编程实践。Symbian是一个经典的移动操作系统,曾广泛应用于诺基亚等早期智能手机,而S60是其上一个流行的用户...
Symbian OS C++程序员编码诀窍.pdf symbian 开发过程.pdf symbian 入门篇.doc symbian+开发讲义.pdf symbian编码标准.pdf Symbian程序编码规范.pdf symbian实例教程.pdf Symbian学习笔记.pdf
Symbian操作系统曾经是智能手机领域的一个重要平台,而Python作为轻量级的解释型语言,为开发者提供了一种便捷的方式来开发Symbian设备上的应用程序。 标题"basic_python_symbian_60.rar_python_symbian"暗示了这个...
- **市场份额增长**:2011年第一季度,Android在全球的市场份额首次超过了塞班系统,成为全球第一大操作系统。截至2013年第四季度,Android平台手机的全球市场份额达到了78.1%。 #### 二、核心概念 ##### Activity...
【标题】"21简单GUI编程1 张锦锋Symbian讲座"涉及的是一个关于图形用户界面(GUI)编程的教程,由张锦锋主讲,专注于Symbian操作系统平台。Symbian是一个曾经广泛应用于智能手机的操作系统,特别是在早期智能手机...