carbide 打包sis前 先要加入 pkg 项目右键 -> properties -> carbide.c++ -> carbide build configuration -> sis builder -> add 在SIS Properties面板的PKG File添加 pkg文件 ctr + h 全工程搜索 收集ing carbide的快捷方式。。。。 http://blog.youkuaiyun.com/hejianhua/archive/2009/09/22/4579953.aspx |
1.系统时间的获取 currentTime.HomeTime(); //将time设置为本地时间(当前设定时区的时间,也就是手机显示的时间) currentTime.UniversalTime(); //将time设置为标准时间(例如当前设置时区为北京(与标准时间差八小时),则获取的时 间与手机当前时间差八个小时) 2.时间格式是否与用户设置相关 相关: 手机用户可以设置时间显示模式 例如:年/月/日 月/日/年 日/月/年 currentTime.FormatL(time,_L("%Y%M%D%/0%1%/1%2%/2%3%/3")); //2007/08/13 如上所示的时间获取 其中 %1代表第一个项 例如 年/月/日时代表获取的是“年” 而“月/日/年”则代表获取的 无关: currentTime.FormatL(timeBuf,_L("%F%Y/%M/%D,%H:%T:%S")); //将系统时间格式化为 2008/08/16,21:22:22 如上所示 %F代表获取的时间为标准 年月日格式 与系统设置无关 以下为详解: 详解: 格式串分为本地相关和本地无关格式串,也就是说和系统的时间日期中设置的格式是否相关。 以下所有格式字符都要加% 本地无关: %:因为%是参数字符,所以需要输出%的时候,要用两个连续的%%进行转义 *:加在%后,表示需要缩写,比如%*T表示对分钟进行缩写,如果不是两位数,则去掉前导0 C:6位的微秒,%C默认是6位的,%*C2表示只取前两位,%*C4则取前4位 S:2位的秒,加*去掉前导0 T:2位的分,加*去掉前导0 H:24小时制的时,加*去掉前导0 I:12小时制的时,加不加*都会去掉前导0 F:%F参数表示D/M/Y三个参数都是本地无关的,按照格式串原样输出,%F需要用在%D、%M、%Y之前 D:2位的日,加*去掉前导0 M:2位的月,加*去掉前导0 Y:4位的年,加*去掉前两个数字,比如2008只显示08 E:星期,英文环境下,Sunday~Saturday,加*显示缩写,Sun~Sat;中文环境下,星期一~星期日,加*显示缩写,一~日 N:月的名称,英文环境下,January~December,加*显示缩写,Jan~Dec;中文环境下,1月~12月,加*显示缩写,阿拉伯数字 1~12。注意1月~12月数字都是阿拉伯数字,而不是汉字一~十二 W:2位数字,当前日期处于一年中的第几周,加*去掉前导0 X:日期后缀。例如%*D%X显示形如3rd(三号),%D%X显示形如02nd(二号) Z:3位数字,当前日期处于一年中的第几天,加*去掉前导0 本地相关: .:(点号)%.默认是小数点,表示分隔秒与毫秒之间的字符。可以通过TLocale::SetDecimalSeparator()设定。 ::(冒号)%:表示获取本地设置中的时间分隔符,紧跟一个0~3范围的数字来指定哪一个日期分隔符。 |
s60 3rd //放到最后一行 "C:\Symbian\9.1\S60_3rd_MR\epoc32\release\gcce\urel\NewsReader.exe" -"!:\sys\bin\NewsReader.exe",FR,RI s60 2rd "\epoc32\release\armv5\urel\zoom.exe"-"!:\sys\bin\zoom.exe", FILERUN, RUNINSTALL |
void CHttpEngine::DoHTTPPostL() // Get request method string for HTTP POST // Open transaction with previous method and parsed uri. This class will // Set headers for request; user agent, accepted content type and body's // Set this class as an data supplier. Inherited MHTTPDataSupplier methods // Submit the transaction. After this the framework will give transaction iRunning = ETrue; |
// CONSTANTS // Used user agent for requests // This client accepts all content types. // Format for output of data/time values // Some texts for header output //继承与 public MHTTPDataSupplier _LIT8( KContent,"<config><client type=\"J2ME\" version=\"-1\" platform=\"JE2.0\"/><servers version=\"-1\"/><service-no version=\"-1\"/><parameters version=\"-1\"/><hints version=\"-1\"/><client-config version=\"-1\"/><http-applications version=\"-1\"/></config>" ); // Parse string to URI (as defined in RFC2396) // Get request method string for HTTP POST // Open transaction with previous method and parsed uri. This class will // Set headers for request; user agent, accepted content type and body's // Set this class as an data supplier. Inherited MHTTPDataSupplier methods // Submit the transaction. After this the framework will give transaction //实现以下几个虚函数 void CHTTPEngine::ReleaseData() TInt CHTTPEngine::OverallDataSize() TInt CHTTPEngine::Reset() HBufC8* iPostData; // Data for HTTP POST |
// CONSTANTS // Used user agent for requests // This client accepts all content types. // Format for output of data/time values // Some texts for header output TBuf<1024> uri16; // Parse string to URI (as defined in RFC2396) // Get request method string for HTTP GET // Open transaction with previous method and parsed uri. This class will // Set headers for request; user agent and accepted content type //断点续传设置 //参数看具体协议 if (iDownLoadLenth != -1) |
//全局对话框 //询问对话框 滚动等待对话框-非全局 iWaitDialog->PrepareLC(R_GPS_REQUEST_POSITION_WAIT_NOTE); // start it显示及等待 //显示及可修改内容对话框 //资源 |
在S60 3rd中,增大默认堆栈的大小转自http://www.opda.net.cn/archiver/tid-3587.html 概叙 在S60第三版中,默认的堆栈大小为8k,它不能满足一些复杂的应用程序。 在一台手机(或SDK的模拟器)上会有一定的物理内存大小,而你的应用程序将获取一部分做为堆内存使用。 默认情况下,程序支持的堆最大是1M,申请超过1M会导致失败,从而造成内存泄漏. 怎样才能让你的程序可申请超过1M的内存,可通过以下的的示例方法实现: GLDEF_C TInt E32Main() |
本文章转载自:http://blog.youkuaiyun.com/stonesl/archive/2008/06/17/2557599.aspx 个人觉得很好,留作备份,以备以后使用 CAknSingleStyleListBox* iListBox; CAknSearchField* iListBoxSearchField; //defined CGulIcon* defaultIcon = NULL; CAknSearchField* searchField = CAknSearchField::NewL( *this, CAknSearchField::EFixed,defaultIcon, 40 ); CleanupStack::PushL ( searchField ); searchField->SetSkinEnabledL(ETrue); CAknFilteredTextListBoxModel* filteredModel = static_cast< CAknFilteredTextListBoxModel* >( iListBox->Model() ); filteredModel->CreateFilterL( iListBox, searchField ); searchField->Editor().SetAknEditorInputMode(EAknEditorTextInputMode); CleanupStack::Pop( searchField ); searchField->MakeVisible( ETrue ); iListBoxSearchField = searchField; //in //SizeChanged() iListBox->SizeChanged(); AknFind::HandleFixedFindSizeChanged( this, ( CAknColumnListBox *)iListBox, iListBoxSearchField );//use HandleFixedFindSizeChanged //OfferKeyEvent if ( iListBoxSearchField != NULL && iListBoxSearchField->OfferKeyEventL( aKeyEvent, aType ) == WasConsumed ) { return EKeyWasConsumed; } 下边两个不要忘了,要不然会改变不了输入法的(我就在这个地方折腾了一天,郁闷呀!) TInt CContactContainer::CountComponentControls() const { return 2; } CCoeControl* CContactContainer::ComponentControl(TInt aIndex) const { switch ( aIndex ) { case 0: return iListBox; case 1: return iListBoxSearchField; default: return NULL; } } //取得指定项的操作 TInt CurrentItem = iListBox->View()->CurrentItemIndex (); CAknFilteredTextListBoxModel* Model = STATIC_CAST (CAknFilteredTextListBoxModel*, iListBox->Model ()); TInt index = Model->Filter()->FilteredItemIndex (CurrentItem); if( index < 0 ) return NULL; CDesCArray *itemList = static_cast<CDesCArray*>( iListBox->Model()->ItemTextArray() ); TPtrC ptrin=(*itemList)[index]; 本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/stonesl/archive/2008/06/17/2557599.aspx |
写的很好,特意转过来,做一个备份。 关于pkg文件的一些高级选项....ZZ from wiki.forum.nokia.com 收藏 "license.txt" - " ", FILETEXT, TEXTCONTINUEFILETEXT指出在安装期间显示该文件。TEXTCONTINUE会提供一个可以关闭这个文本文件的继续按钮然后继续安装。代替TEXTCONTINUE,你可以指定为下面之一: • TEXTSKIP 显示一个是/否选项。 若选择是,安装继续。 若选择否,则跳过下一段说明,安装仍正常继续向前。 • TEXTEXIT 显示一个是/否选项。 若选择是,安装继续。若选择否, 安装停止并删除任何已安装文件。 • TEXTABORT 显示一个是/否选项。但当选择否时,安装只停止,不删除任何已安装文件。移除运行时生成的文件。
IF (LANGUAGE=2) ; 若语言是法语,则显示mytext.t02 顺便提及,你也必须在PKG中定义语言: ;Language - standard language definitions 若应用程序创建的文件名在安装时已知,那么它们必须作为'空文件(null files)'添加到.pkg文件。在.pkg文件中的文件名(语言中立的文件)的格式如下: "" - "C\system\data\my_runtime_generated_file", FILENULL这里的my_runtime_generated_file是一个由应用程序所创建的数据文件。FN(FILENULL)参数意思是文件尚不存在,因此它不包含在sis文件中。是由运行的应用程序创建的,在应用程序被移除时会被删除。注意: 所指定的源文件名不重要且应为空白("")。也注意: 当升级到一个后来的版本这些不会被删除。这确保了诸如.ini等文件,存储了应用程序偏好,在升级中不丢失。 FILENULL选项在Symbian OS v9.x中是不支持的。建议开发人员在他们的应用程序的数据笼(data cage)内创建文件,这里的文件在卸载时会被自动(及完全)删除。 若应用程序所建的文件数量(或它们的准确名称)未知,情形就稍微有些复杂了。作为一种解决方法,.sis包能包含一个特殊的卸载程序,负责在卸载时找到并移除恰当的文件。这样的一个程序可以在卸载时被自动运行,如下: "\epoc32\release\armi\urel\uninst.app" - "!:\system\apps\myapp\uninst.app", RR, RWRR (RUNREMOVE)参数在移除(卸载)时要运行的文件。RW (RUNWAITEND)指明(系统)移除工具应启动这个程序然后等待,直到继续安装之前运行完。 嵌入SIS文件 @”sis file name”,(UID)例如: @”prog1.sis”,(0x12341234) prog1.sis,具有UID 0x12341234,在碰到这行时安装。注意: 在卸载时,这个嵌入的sis直到系统判断出没有其他当前已安装部件使用它(也就是,没有其他已安装部件在其pkg文件也包括该sis)才会被卸载。 在安装或卸载时运行可执行文件 例如: "\Symbian\6.1\Series60\Epoc32\release\armi\urel\myprogram.exe"- • RUNREMOVE (RR) 使得只在卸载期间才执行。 • RUNREMOVE (RR) 使得可执行文件在安装和卸载期间都执行。 这三个选项中任一个可进一步与关键字 RUNWAITEND (RW)配合使用,RUNWAITEND (RW)使得安装等到执行结束方可继续。若未指定,那么安装将在可执行文件启动后马上继续。 依赖行(Requisite Lines) {UID}, Major_Version_#,Minor_Version_#,Build_#,{“Product Name”}这意味着具有指定的UID和产品名、且不早于所指定版本号的部件必须存在安装才能继续。 例如: {0x10000123},1,0,0,{"MyDll"}指出一个叫MyDll的部件,具有UID 0x10000123和至少是1.0.0的版本号,必须在安装能继续前已经存在。依赖行应该看上去比较熟悉——因为这也是目标平台行的实现方式。目标平台行例子: (0x101F6F88), 0, 0, 0, {"Series60ProductID"}是一个必要的声明: 名称为Series60ProductID的部件,其UID为0x101F6F88、版本号0.0.0或更高,必须存在安装方能继续。 从S60第三版开始,S60产品Id必须写在方括弧中。例子: [0x101F7961], 0, 0, 0, {"S60ProductID"}
AM– US English &EN, FR, FI它指出此sis文件含有英语、法语和芬兰语语言选择。若不含有语言行,则认为是&EN。 限制支持的设备 下例演示了一个包文件例子,只能安装到Nokia N80, N93, N93 和 N95: [0x200005F9], 0, 0, 0, {"Nokia N80 ID"} 安装设备相关文件 IF (MachineUID=0x20000600) OR (MachineUID=0x2000060B)
if exists("z:\system\install\Series60v3.2.sis") 本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xjtursh/archive/2008/08/05/2768902.aspx 本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/taoshuai567/archive/2009/11/06/4777597.aspx |