Q:一个经典的helloworld程序需要几个文件?
?
l??????? 一個安裝文件bld.inf,這個文件內(nèi)容很簡單,只給出了要編譯的工程文件,當(dāng)然如果有多個工程文件要編譯,可以直接寫到后面如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,這兩個文件包含了程序的大多數(shù)文本資源。
l??????? 一個程序的頭文件HelloworldApp.h和一個程序的源文件HelloworldApp.cpp。
l??????? 一個包文件HelloworldApp.pkg。
l??????? 若干個圖片文件在aif目錄中。
?
一個經(jīng)典的HelloworldApp程序有四個類,并且采用了MVC模式來構(gòu)建程序,這四個類分別是應(yīng)用程序類CHelloworldAppApplication,文檔類CHelloworldAppDocument,程序界面控制類CHelloworldAppUi和程序界面視圖類CHelloworldAppView。
一般情況下,一個經(jīng)典的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);? ?// 兩段構(gòu)造
??? ~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
};
總結(jié)
以上是生活随笔為你收集整理的Q:一个经典的helloworld程序需要几个文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态sql语句返回值
- 下一篇: UML精粹--标准对象建模语言简明教程