摘要:
教材里说到活动对象时,总拿CTimer来做例子,从CActive派生一个CMyActive然后它包括一个CTimer iTimer,再利用它的异步函数iTimer.After来演示活动对象的效果。
但是CTimer本身就已经是源于CActive了,所以我今天来讨论的是直接使用定时器,必竟在手机上定时器是一个比较常用的功能(在BREW开发中因为没有多线程,几乎所有的应用都会用上那个ISHELL_SetTimer)。
CTimer有两个子类CPeriodic和CHeartbeat,都可以处理周期性的定时器回调,其中心跳当然是更有规律一些了,它的使用也稍稍麻烦一点。
阅读全文
摘要:
symbian支持多线程(它有一个RThread类)但却又不提倡大家使用多线程,理由一般是说应用更安全?代码更简单?不过我觉得最有说服力的是省电。
既然如此,那我们就不说“多线程”,说说“多任务”吧,活动对象(Active Object)提供了非抢占式的多任务协同处理机制,它不是多线程的,而是运行在一个单线程中。
AO机制包括两个类CActiveScheduler和CActive:
调度器CActiveScheduler:顾名思义它是协调多个活动对象的调度者。既然是非抢占式的,那它的调度原则是什么呢?教材上说法是:
阅读全文
摘要:
上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的。
如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。
阅读全文
摘要:
今天学习一下如何修改GUI程序中的图标与如何加载图像。
与2nd.不同的是,3rd.支持svg格式的可缩放图标(最大好处在于一个图标搞定,以前用bmp时为了应用程序的菜单图标得要做四个小图标)。而且,现在有了一种新的图像打包格式mif(这名字咋跟BREW中那个MIF一样啊)。虽然还支持以前的MBM方式但是不建议使用了。
要在应用程序中增加图像图标资源,过程如下:
阅读全文
摘要:
开发symbian的GUI应用是有模板的,用Carbide C++的工程向导可以自动生成程序的基本框架。不过可能与安装的SDK版本有关,我现在只能生成一个AppUi一个Container的常规模板(以前用2nd FP3时还可以生成多个view多个container的视图模板)。
不管是哪一种模板,它们共同的部分是入口函数、Application和Document。即以下三个文件是所有工程都具有的:
1)有一个与工程同名的cpp文件,它只提供了两个全局函数,是程序执行的入口,负责创造Application。这个文件我们不用管它。
2)有一个以工程名+Application命名的类,派生于CAknApplication,它负责创建文档类并提供应用的UID。一般情况下它也不需要我们操心,但是因为它提供了一个函数OpenIniFileLC,如果我们需要在启动程序时加载ini文件中的配置,可以重载它。
阅读全文
摘要:
第一次打开SymbianC++的程序源代码,第一感觉就是“这是C/C++吗?咋这么眼生啊”。
看代码看书,才算是稍稍明白了一点,其实无非就是typedef罢了,symbian可比brew定义了更多的东西。
这是以后干活的基础,所以做个笔记,省得忘了。
一、基本数据类型
这个比较简单,都在e32def.h中写着呢。也就是以下这几个类型要注意一下,以后照着写罢了,含义也很明了,不用多说。 阅读全文
摘要:
在BREW的开发环境中,没有一个联机调试工具,一直是我觉得相当不方便的事情。在S60平台上做开发,至少这一点是能满足我们的需要。
第一种方法:Carbide C++ v1.2 的 Debug On Device
Carbide C++1.2的pro.以上版本都支持设备调试,实在是一件大快人心的事。
要实现这个功能,也是相当的方便,当然前提是你用的是Carbide C++ v1.2的Pro.以上版本。
按正常模式写程序,在模拟器上都弄的差不多了,想放到设备中调试的话,只需要做下面几步:
1、先在设备中安装一个软件,安装包在carbide的安装目录下,我机器上的位置是C:\Nokia\Carbide.c++ v1.2\plugins\com.nokia.carbide.trk.support_1.2.0.29\trk\s60,下面有两个 sis文件,因为我要在N73上调试,所以我选择其中的s60_3_0_app_trk_2_7.sisx这个,另一个3_1是用于3rd.FP1手机的。安装后在手机里就有一个TRK应用了。
阅读全文