Symbian开发点滴1(入门和简单的感受)

来源:互联网 发布:淘宝中差评处理掉毛 编辑:程序博客网 时间:2024/04/26 14:34

 [原创 2009-05-18 20:01:10]     字号:大 中 小 看了几天Symbian开发,感觉真的复杂,还是微软程序员好干。

先说说开发环境吧,需要安装active perl,Java,s60的sdk和ide

网上文章比较多,搜索一下就找了

 

这个ide的问题,现在比较推荐carbide c++2。0完全免费的,算是eclipse的,完整的ide。还有一个carbide.vs是一个插件,就可以是vs2003,2005来开发,但是好像nokia已经不发展了。还有一个比较新的就是QT creator,网上的文章说这个太厉害了。有质的变化,提供新的完整类库,原来要写100行代码实现的功能,现在10行就搞定了,呵呵,不过只是技术预览版,而且好像还是收费的版本。所以现在还是先使用carbide2.0吧

 

Symbian使用c++作为开发语言,但是不是纯c++,里面为了适应手机这样的设备,做了很多更改,比如基本的数据类型,还有类的实例化过程,差别很大,慢慢看了。本来c++就不好。

 

Symbian提供了3中框架开发模式:基于控件的,视图的,和对话框的。

carbide2.0新建项目向导里面,没有说完全对应的框架,但是提供的那个gui application有点像控件框架的,只是使用view累,也不是container类,反正有点晕。还有一个项目模板是gui application with ui desinger这个可以拖拽控件,但是框架更看不懂了。

我推荐还是使用gui application吧,里面有完整的代码可以响应菜单事件,方便添加新的事件

c++都分头文件H和类文件cpp,头文件h只是声明方法和字段,不实现,cpp文件来实现。

 

添加控件的时候,控件的代码都要添加在view类里面。

InitComponentArrayL();
 
  iLabel = new(ELeave)CEikLabel();
  iLabel->SetContainerWindowL(*this);
  iLabel->SetTextL(_L("Simple Label"));
  iLabel->SetExtent(TPoint(10,10),TSize(150,30));
  Components().AppendLC(iLabel);
  CleanupStack::Pop(iLabel);

一个小例子。添加label的。

当然这样做是比较麻烦,在control类中添加两个函数,就不需要每次都写组件添加了

声明这两个:

 TInt CountComponentControls() const;//返回控件的数量
 
 CCoeControl* ComponentControl(TInt aindex) const;//根据aindex的不同,返回空间的指针。

比如这样:

TInt CHelloLabelAppView::CountComponentControls() const
{
 return 2;
}

CCoeControl* CHelloLabelAppView::ComponentControl(TInt aindex) const
{
 switch(aindex)
  {
  case 0:
   return iLabel1;
  case 1:
   return iLabel2;
  default:
   return NULL;
  }
}

 

还有就是include的问题。一个类如果用过其他类,不如sdk的标准类,就要添加include <.h>文件

如果用到类库还要添加lib文件,就是在group文件下的mmp文件,可以在carbide下有图形界面的添加,也可以直接去文本编辑器里面添加了。很好找到