S60第3版“Hello World!”入门开发详细介绍
1,新建项目
安装完成后,打开并新建项目,File-New-Symbian OS C++ Project
选择所建项目的类型,本案例选择GUI Application
新建项目完成。
2,项目程序框架介绍
新建项目后,会自动生成项目程序框架代码(包含Includes、date、help、inc、src、gfx、group、sis文件夹)
其中src是C++源码文件夹,主要用来编写C++源代码
Gfx是图片资源文件夹
Sis应用程序 打包文件夹
更多的文件夹详细说明可以参见http://library.forum.nokia.com/
3,程序运行机制
新建wiki图形用户界面程序后系统会自动创建一个GUI应用程序的框架,在需要的地方编写代码即可。本案例中只需要在SRC文件夹和inc文件夹编写代码。
程序运行机制解释:
项目src文件夹中wiki.cpp文件
Wiki.cpp代码解释:执行手机应用程序时首先运行的是GLDEF_C TInt E32Main()
再执行EikStart::RunApplication(NewApplication);(RunApplication作用是新建一个应用程序类的实例)
LOCAL_C CApaApplication* NewApplication()
{
return new CwikiApplication;
}
CwikiApplication
程序开始时运行E32Main入口函数,会实例话应用程序RunApplication,在实例话的过程中会调用UI 和VIEW(wikiAppUi.cpp和wikiAppView.cpp文件)的构造函数。
本例子只编写了wikiAppView.h文件。
其中用于显示的代码编写在wikiAppView.cpp文件中
控键(和复选框,按钮,滚动条)等编写在wikiAppUi文件中
4,编写代码
本案例需要在手机上显示“helloworld!”需要先在类里面添加字符串类型的成员变量,用以保存想要显示的字符串“helloworld!”。
1,头文件声明
本例需要在头文件inc文件夹appview.h文件类定义里面添加成员变量,const CFont* iFont;
TBuf<24> iText;
2,编写ConstructL函数
初始化这个变量(赋值),是写在view.cpp的构造函数(ConstructL函数)里
iText.Zero();
_LIT(KHelloWorldText,"Hello world!");
iText = KHelloWorldText;
具体解释:
iFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimaryFont);
这句代码是设置字体。
创建一个字体
// set the font
iFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimaryFont);
同样,使用这个类AknLayoutUtils也必须在头文件(inc-…appview.h)添加这个类的头文件#include <aknutils.h>
iText.Zero();
是用于这个字符串内存清零
_LIT(KHelloWorldText,"Hello world!");
把C风格的字符串(以0结尾的字符串)转换成TBUF类型,
iText = KHelloWorldText;
给这个变量赋值“helloworld”
3,编写Draw函数
在Appview.cpp文件中Draw显示函数里添加的具体显示代码:
void CwikiAppView::Draw(const TRect& /*aRect*/) const
{
// Get the standard graphics context
CWindowGc& gc = SystemGc();
gc.SetPenStyle( CGraphicsContext::ENullPen );
gc.SetBrushColor( KRgbWhite);
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
// Gets the control's extent
TRect drawRect(Rect());
// Clears the screen
if (iText.Length() > 0)
{
gc.UseFont(iFont);
gc.DrawText(iText, drawRect, Rect().Height()/3, CGraphicsContext::ECenter );
gc.DiscardFont();
}
else
{
gc.Clear( drawRect );
}
}
具体解释:
gc.SetPenStyle( CGraphicsContext::ENullPen );
gc.SetBrushColor( KRgbWhite);
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
设置画笔类型,画刷颜色,画刷类型
if (iText.Length() > 0)
{
gc.UseFont(iFont);
gc.DrawText(iText, drawRect, Rect().Height()/3, CGraphicsContext::ECenter );
gc.DiscardFont();
}
else
{
gc.Clear( drawRect );
}
如果iText这个变量不为空的话,就显示iText内容,如果为空,就把gc也就是图形环境Clear
设置当前使用字体UseFont,用这个字体显示字符串(文本),写完再撤销当前字体
5,编译生成
6,模拟器运行