zoukankan      html  css  js  c++  java
  • Symbian多平台游戏引擎VS开发入門

           在VS里建立了一个新项目,以S60 Simple Hello World Application为模板。向导自动生成了一些基本文件,可以在S60的SDK下编译运行了。唯一的一个.h文件里声明了Application、Document、AppUi、Container四个类,这也是symbian推荐的结构我没有修改这个结构,.cpp文件里是对这四个类的实现,另一个在group里的.cpp文件里包含了程序所需要的3个UID。

         为了能适应多个版本的SYMBIAN系统,我通过在mmp文件里添加MACRO项来让编译器选择不同的代码,当然也可以在VS中操作,在“项目”-》“属性”-》“C/C++”-》“预处理器”-》“预处理器定义”里添加需要在编译时使用的宏定义,你可以为不同的SDK设置不同的宏,比如我可以使用SERIES60、SERIES80、SERIES90、UIQ来区分不同的SDK版本。

         把这个项目用S80的SDK编译,出错了。S60用的是AVCON,S80用的是EICON(好象是),所以不能通用,现在预定义的宏作用来了,通过不同的预定义宏来使用不同的UI类保证了源代码的通用性。S60的Application继承自CAknApplication,Document继承自CAknDocument,AppUi继承自CAknAppUi;S80、S90、UIQ的Application继承自CEikApplication,Document继承自CEikDocument,AppUi继承自CEikAppUi。S60使用了aknappui.h,aknapp.h,akndoc.h,avkon.lib,而S80要包含eikappui.h,eikapp.h,eikdoc.h而且不需要avkon.lib。用预定义的宏让编译器在选择不同的SDK时包含不同的头文件继承不同的基类,现在终于能够在S60,S80,UIQ(S90还没测试)上编译通过并运行。

         在Container的构造器里添加SetExtentToWholeScreen();让窗口全屏。在UIQ中好象要把***.uid.cpp文件中的内容注释掉才能编译通过,不然会报UID重定义,要用#ifndef|#endif包起来。

         简单的跨版本代码出来了,以后往里面添砖加瓦基本就采用这种方式了。

  • 相关阅读:
    模仿jquery的一些实现
    使按钮失效的方法
    类似jquery的一个demo
    oracle 集合变量以及自定义异常的用法
    java的for循环问题的解决,以及安卓中ListView插入数据的问题
    Spring AOP基于xml配置实例
    plsql 的循环之 goto
    Spring AOP报错
    补全aaz288 可能有问题的过程 P_COMPL_AAZ288
    Spring注解配置
  • 原文地址:https://www.cnblogs.com/godwar/p/1085694.html
Copyright © 2011-2022 走看看