1,CHelloCarbideApplication
一個 Application 的應用程序類,從 CAknApplication 繼承出來,
2,CHelloCarbideDocument
這個是文檔類,專門用來存儲應用程序的數據的
3,CHelloCarbideAppUi 應用程序的 UI 類
4,CHelloCarbideAppView 應用程序的 View 類
執行流程
應用程序的入口,在 HelloCarbide.cpp 這個文件中,
整個程序的入口,Symbian 程序的入口函數名叫 E32Main,不是普通 PC 開發中的 main()
EikStart 這個 class 是專門用來初始化和啓動應用程序的,RunApplication 函數的參數是一個工廠方法,在這裏就是
NewApplication
LOCAL_C CApaApplication* NewApplication()
{
return new CHelloCarbideApplication();
}
GLDEF_C TInt E32Main()
{
return EikStart::RunApplication( NewApplication );
}
程序的執行流程就從這裏開始,在 NewApplication 方法中 new 了一個 CHelloCarbideApplication class 的 Object,
然後 S60 Framework 會調用 CHelloCarbideApplication::CreateDocumentL() 方法來創建一個文檔對象,
CApaDocument* CHelloCarbideApplication::CreateDocumentL()
{
return (static_cast<CApaDocument*>( CHelloCarbideDocument::NewL( *this ) ) );
}
我們看到,在這個方法中,調用了 CHelloCarbideDocument class 的 static 函數 NewL.
在這裏的 NewL 和 NewLC 方法就是典型的 Symbian 的 Clean Stack 的用法,
Clean Stack 是 Symbian 中非常重要的概念,一定要搞明白,
請讀下面這個文檔,它非常清楚的說明了 Clean Stack 的用法,在結合這一段代碼,就能很好理解了。
CHelloCarbideDocument* CHelloCarbideDocument::NewL( CEikApplication& aApp )
{
CHelloCarbideDocument* self = NewLC( aApp );
CleanupStack::Pop( self );
return self;
}
CHelloCarbideDocument* CHelloCarbideDocument::NewLC( CEikApplication& aApp )
{
CHelloCarbideDocument* self = new ( ELeave ) CHelloCarbideDocument( aApp );
CleanupStack::PushL( self );
self->ConstructL();
return self;
}
再繼續,S60 framework 會調用 下面整個函數來創建 UI 對象
CEikAppUi* CHelloCarbideDocument::CreateAppUiL()
{
return ( static_cast <CEikAppUi*> ( new ( ELeave ) CHelloCarbideAppUi ) );
}
void CHelloCarbideAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL();
// Create view object
iAppView = CHelloCarbideAppView::NewL( ClientRect() );
}
在這裏又會去調用 CHelloCarbideAppView::NewL 來創建 View 對象,這個 NewL 方法和 CHelloCarbideDocument::NewL 原理是完全一樣的,這裏就不多說了。
至此,Hello World 程序的初始化過程完畢。
關於調試
你最好能自己單步跟蹤調試一下程序,就能很清楚的看到整個程序的執行流程,對你理解 Symbian 程序有非常打的幫助。
在 Editor View 中,共有下面三種方法可以設置斷點,
* Double-click the marker bar to the left of the line of code where you want to place a breakpoint
* Right-click in the marker bar and select Toggle Breakpoint
* Click on the line of code and select Run > Toggle Breakpoint from the program menu bar
然後,主菜單 Run > Debug As > Debug Symbian OS Application,就可以開始調試。
在調試的過程中有四個按鍵需要了解,
F5,Step Into
F6,Step Next
F7,Step Return
F8,Resume