WEB开发网
开发学院手机开发Symbian 开发 Symbian之源码分析之EikEnv.cpp 阅读

Symbian之源码分析之EikEnv.cpp

 2010-07-04 15:42:00 来源:WEB开发网   
核心提示:SetAppReady();//创建结束}void CEikDocument::PrepareToEditL(){//CYourDocument类需要重载CreateAppUiL函数并创建AppUi,iAppUi=CreateAppUiL();iAppUi->SetDocument(this);iAppUi-&g

SetAppReady();

//创建结束

}

void CEikDocument::PrepareToEditL()

{

//CYourDocument类需要重载CreateAppUiL函数并创建AppUi。

iAppUi=CreateAppUiL();

iAppUi->SetDocument(this);

iAppUi->SetEmbeddedDocInfo(NULL,NULL);

//CYourAppUi会重载ConstructL函数

//必须首先调用CEikAppUi::BaseConstructL()

iAppUi->ConstructL();

}

void CEikAppUi::BaseConstructL(TInt aAppUiFlags)

{

//第一次设置AppUi时返回的值为NULL

iContainerAppUi = static_cast(iCoeEnv->SetAppUi(this));

//这里会创建控件栈CCoeControlStack

//以及创建CCoeViewManager

CCoeAppUi::ConstructL(iContainerAppUi);

//初始化DebugKeys以及AlertWin

if (!iContainerAppUi)

iEikonEnv->ControlStackReadyL();

//加载资源文件,EIK_APP_INFO资源里定义的东东应该是在这里被加载的

if (!(aAppUiFlags&(ENoAppResourceFile|ENonStandardResourceFile)))

ReadAppInfoResourceL();

else if (!(aAppUiFlags&ENoScreenFurniture))

CreateResourceIndependentFurnitureL();

iCoeEnv->AddMessageObserverL(*this);

iEikonEnv->PostAppUiInitializeL();

iCoeEnv->RootWin().EnableScreenChangeEvents();

}

这样初始化的过程就结束了,里面还有一堆东西没有看懂,不过重要的几个步骤上面都在了。

三、运行应用程序

env->Execute()调用的是CCoeEnv::Execute():

void CCoeEnv::Execute()

{

iEnvFlags|=ESchedulerIsRunning;

//运行活动调度器,里面是个While循环

//直到程序退出才会返回

TRAPD(exitCondition,CActiveScheduler::Start());

//看是否正常退出或者是Leave导致的退出

__ASSERT_ALWAYS((exitCondition==KLeaveExit) || (exitCondition==KErrNone), Panic(ECoePanicLeaveWithoutTrap));

上一页  1 2 3 4 5  下一页

Tags:Symbian 源码 分析

编辑录入:coldstar [复制链接] [打 印]
赞助商链接