您的位置:首页 > 其它

Q:一个经典的helloworld程序需要几个文件?

2006-08-13 16:51 405 查看
l 一个安装文件bld.inf,这个文件内容很简单,只给出了要编译的工程文件,当然如果有多个工程文件要编译,可以直接写到后面如x.mmp。

PRJ_MMPFILES

HelloworldApp.mmp

x.mmp

l 一个工程文件helloworldApp.mmp,这个文件列出了工程需要的所有文件和用到的库,还有UID等。

TARGET HelloworldApp.app

TARGETTYPE app

TARGETPATH \system\apps\helloworldapp

UID 0x100039CE 0x0a3c7184

USERINCLUDE ..\inc

SYSTEMINCLUDE \epoc32\include

SOURCEPATH ..\src

SOURCE HelloworldApp.cpp

SOURCEPATH ..\data

RESOURCE HelloworldApp.rss

RESOURCE HelloworldApp_caption.rss

LANG SC

LIBRARY euser.lib apparc.lib cone.lib eikcore.lib eikcoctl.lib avkon.lib

AIF HelloworldApp.aif ..\aif HelloworldAppaif.rss c8 context_pane_icon.bmp context_pane_icon_mask.bmp list_icon.bmp list_icon_mask.bmp

l 一个UID的文件HelloworldApp.uid.cpp,该文件包含了一个程序的uid。

l 一个程序的资源文件helloworldApp.rss, HelloworldApp_caption.rss,这两个文件包含了程序的大多数文本资源。

l 一个程序的头文件HelloworldApp.h和一个程序的源文件HelloworldApp.cpp。

l 一个包文件HelloworldApp.pkg。

l 若干个图片文件在aif目录中。

一个经典的HelloworldApp程序有四个类,并且采用了MVC模式来构建程序,这四个类分别是应用程序类CHelloworldAppApplication,文档类CHelloworldAppDocument,程序界面控制类CHelloworldAppUi和程序界面视图类CHelloworldAppView。

一般情况下,一个经典的HelloworldApp程序包含的头文件有:

#include <eikapp.h> // CEikApplication

#include <eikdoc.h> // CEikDocument

#include <coecntrl.h> // CCoeControl

#include <uikon.hrh> // Command codes

#include <eikenv.h> // CEikonEnv

#include <eiklabel.h> // CEikLabel

#include <aknappui.h> // CAknAppUi

#include <aknnotewrappers.h> // CAknInformationNote

CHelloworldAppApplication继承自CEikApplication,

CHelloworldAppDocument继承自CEikDocument,

CHelloworldAppView继承自CCoeControl,并使用了CEikLabel类,

CHellowroldAppUi继承自CAknAppUi。

uikon.hrh文件包含了控件界面的命令映射,aknnotewrappers.h文件包含了一个显示提示信息的便签类CAknInformationNote(有点类似于VC中的MessageBox)。

下面是四个类的声明代码:

//----------------------------------------------------------------------------

// CHelloworldAppApplication

//----------------------------------------------------------------------------

class CHelloworldAppApplication : public CEikApplication

{

private: // From CEikApplication

CApaDocument* CreateDocumentL();

private: // From CApaApplication (via CEikApplication)

TUid AppDllUid() const;

};

//----------------------------------------------------------------------------

// CHelloworldAppDocument (Model)

//----------------------------------------------------------------------------

class CHelloworldAppDocument : public CEikDocument

{

public: // Constructor

CHelloworldAppDocument(CEikApplication& aApp);

private: // From CEikDocument

CEikAppUi* CreateAppUiL();

};

//----------------------------------------------------------------------------

// CHelloworldAppAppUi (Controller)

//----------------------------------------------------------------------------

class CHelloworldAppAppUi : public CAknAppUi

{

public: // Constructors and destructor

void ConstructL(void); // 两段构造

~CHelloworldAppAppUi(); // 为什么要用虚的

private: // From CEikAppUi

void HandleCommandL(TInt aCommand); // 处理按键命令

private: // Data

CHelloworldAppContainer* iAppContainer;

};

//----------------------------------------------------------------------------

// CHelloworldAppContainer (View)

//----------------------------------------------------------------------------

class CHelloworldAppContainer : public CCoeControl, MCoeControlObserver

{

public: // Constructors and destructor

void ConstructL(const TRect& aRect);

~CHelloworldAppContainer();

public: // New functions

public: // From CCoeControl

void SizeChanged();

TInt CountComponentControls() const;

CCoeControl* ComponentControl(TInt aIndex) const;

void Draw(const TRect& aRect) const;

public: // From MCoeControlObserver

void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);

private: // Data

CEikLabel* iLabel; // example label

CEikLabel* iToDoLabel; // example label

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐