Symbian编程:俄罗斯方块六步曲(第一步)

第一个程序是series60 SDK自带的hello world程序,在group/目录下将有下面的工程文件,bld.inf、s60test.mmp、及由bldmake生成的abld.bat文件,有关编译的命令可以查看相关资料。
<script src="/adsc/dispad.asp?id=10"></script>

• Group/step1.rss是资源文件,在我们的例子中包含软键盘的定义(R_AVKON_SOFTKEYS_OPTIONS_EXIT - 右边的选择键及左边的退出键)和选择菜单,还可以在后面加更多的资源.
• Group/step1.pkg描述如何去创建*.sis文件,*.sis是可以安装在手机中的文件。
• inc/和src/包含程序的源代码,hello world在SDK中有详细的描述。

不像windows和UNIX程序,symbian程序没有带main()函数,可以像动态链接被系统装载,像其他每个动态链接它有e32dll函数,但是必须被迅速归还。
GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
{
return KErrNone;
}
系统调用newapplication()函数得到新的CApaapplication对象,
EXPORT_C CApaApplication* NewApplication()
{
return (new CS60TestApplication);
}
在avkon(for series60)中返回一个CAknapplication子类的对象,在这个例子中是在s60testapplication.cpp实现的CS60testapplication,在每次执行中下面两个函数必须重载,第一个,在AppDllUid将返回该程序唯一的UID,我们例子中的UID不会出现在实际发布的程序中.
第二个函数是创建CApaDocument类对象的CreateDocumentL函数,
CApaDocument* CS60TestApplication::CreateDocumentL()
{
CApaDocument* document = CS60TestDocument::NewL(*this);
return document;
}

TUid CS60TestApplication::AppDllUid() const
{
return KUidS60TestApp;
}
在我们的例子中是CAknDocument的继承类CS60TestDocument
class CS60TestDocument : public CAknDocument
{
public:
static CS60TestDocument* NewL(CEikApplication& aApp);
static CS60TestDocument* NewLC(CEikApplication& aApp);
~CS60TestDocument();

CS60TestAppUi *iAppUi;

public: // from CAknDocument
CEikAppUi* CreateAppUiL();

private:
void ConstructL();
CS60TestDocument(CEikApplication& aApp);
};
要重载CreateAppUil,此函数是用来建立用户接口响应对象的,
CEikAppUi *CS60TestDocument::CreateAppUiL()
{
iAppUi=new(ELeave) CS60TestAppUi(this);
return iAppUi;
}
在我们的例子中这是由类CS60TestAppUi实现的,在该类中ConstructL函数首先调用BaseConstructL函数进行初始化,从资源中装载软键盘和菜单定义,
void CS60TestAppUi::ConstructL()
{
BaseConstructL();

iAppView=CS60TestAppView::NewL(ClientRect(), iDoc);
AddToStackL(iAppView);
}
接下来我们将创建类CS60TestAppView的对象,这个类是CCoeControl的继承类,
class CS60TestAppView : public CCoeControl
{
……….
}
CCoeControl对象将控制哪个在屏幕中描绘,我们的ClientRect()控制将填充状态栏与软键盘间的空间,把它改成ApplicationRect()将控制全屏,AddToStackL接受来自键盘的反应,AppUi对象同样接受来自菜单的反应,当用户选择了菜单命令HandleCommandL将调用相应的命令代码,将完成结束命令和”Hello”命令显示一段文本。
void CS60TestAppUi::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;

case ES60TestHello:
{
_LIT(message, "Hello!");
CAknInformationNote *informationNote=new(ELeave) CAknInformationNote;
informationNote->ExecuteLD(message);
}
break;

default:
Panic(ES60TestBasicUi);
break;
}
}
Draw函数是我们在CS60TestAppView唯一重载的函数,它将当我们的视图需重画时被调用,在本例中我们将显示在(176*144)的区域中,定义字符串将用到TBuf类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值