详解 CEikonEnv::Static() iEikonEnv EikAppUi() AppUi() CAknViewAppUi CEikApplication CCoeEnv

详解 CEikonEnv::Static() iEikonEnv EikAppUi() AppUi() CAknViewAppUi CEikApplication CCoeEnv

 

请解释以下语句:

1

#define iAvkonViewAppUi ((CAknViewAppUi*)CEikonEnv::Static()->EikAppUi()) in aknviewappui.h 

先用CEikonEnv::Static()得到一个指向CEikonEnv实例的指针,再用EikAppUi()得到一个指向CEikAppUi的指针,然后转换为CAknViewAppUi指针。

CEikAppUi 和 CAknViewAppUi 的继承关系可以参见后面的关系清单。

 

iAvkonViewAppUi->ProcessMessageL( TUid::Uid(KUidApaMessageSwitchOpenFileValue ), aParams); in owner cpp file

 

2.

  #define   iEikonEnv   (STATIC_CAST(CEikonEnv*,iCoeEnv))  
  #define   STATIC_CAST(type,exp)   (static_cast<type>(exp))  

转换iCoeEnv指针 为 指向CEikonEnv 实例的指针。

 

iEikonEnv CEikonEnv::Static()等价。

iCoeEnv was defined in class CEikApplication.

iCoeEnv 是这样被定义的:

protected:

      CCoeEnv* iCoeEnv;

class CCoeEnv : public CActive, public MObjectProvider

class CActive : public CBase

 

CCoeEnv 介绍:

CCoeEnv provides an active environment for creating controls. It implements

active objects and an active scheduler, which provide access to the window

server, simplifying the API for application programs. It also provides utility

functions that are useful to many applications.

 

CEikApplication 的详细介绍见后。

 

3. 

CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );   

CCamAppUi* appUi =  static_cast<CCamAppUi*>( iEikonEnv->AppUi() );

CCamAppUi  is owner *Ui.cpp file.

先用CEikonEnv::Static()得到一个指向CEikonEnv实例的指针,再用AppUi()得到一个指向(Pointer to the app UI owned by the application.)的指针,然后转换为CCamAppUi的指针。

CCamAppUi 是我们自己的class.

 

解释如下所述:

class CEikonEnv : public CCoeEnv;

Description

An environment for creating controls and utility functions for manipulating them.

Every GUI application is provided with an instance of CEikonEnv by the framework, which can be accessed through either CEikonEnv::Static() or the iEikonEnv macro of CEikApplication.

所以,不要去管CEikonEnv和其他类的关系,我们只能用CEikonEnv::Static() or the iEikonEnv 来得到一个CEikonEnv 实例,然后就调用CEikonEnv 中的方法。

通过CEikonEnv::Static() 和 iEikonEnv为什么就可以得到一个CEikonEnv实例呢?

答:

GLDEF_C TInt E32Main()
{
return EikStart::RunApplication( NewApplication );
}
RunApplication
会创建一个CEikonEnv对象。

 

CEikonEnv中的静态方法可以直接调用,不需要先得到一个实例。如:

CEikonEnv::InfoWinL(_L("note:"), _L("text"));

 

 

1: 

EikAppUi()-Defined in CEikonEnv: (CEikonEnv::Static()->EikAppUi())

inline CEikAppUi *EikAppUi() const;

Description

Gets the application UI of the application using this CEikonEnv.

 

2:

iEikonEnv:  Location: EIKDEF.H

iEikonEnv (STATIC_CAST(CEikonEnv*,iCoeEnv))

 

Description

Macro to allow easy access to the CEikonEnv instance.

iCoeEnv was defined in class CEikApplication.

iCoeEnv Class CEikApplication的保护数据成员

 

class CEikApplication : public CApaApplication;

Description

The base of all Uikon applications.

CEikApplication builds on CApaApplication, providing a basis for applications working within the framework provided by Uikon. It also contains an interface to the resource file and the document.

Each Uikon application class is derived from CEikApplication. Application writers must provide at least an implementation of the pure virtual function CreateDocumentL().

The application's resource file can be changed from the default by overriding ResourceFileName().

Derivation

CBase - Base class for all classes to be instantiated on the heap

  CApaApplication - Defines the basic behaviour for applications

    CEikApplication - The base of all Uikon applications

  

3:

AppUi()  - Inherited from CCoeEnv:    (CEikonEnv::Static()->AppUi())

inline CCoeAppUi *AppUi() const;

Description

Gets the application UI owned by this application.

Return valueCCoeAppUi *

Pointer to the app UI owned by the application.

  

AppUi 继承关系:CShowContactAppUi is owner class.

class CShowContactAppUi : public CAknViewAppUi

class CAknViewAppUi : public CAknAppUi

class CAknAppUi : public CAknAppUiBase, MEikStatusPaneObserver, public        MCoeViewDeactivationObserver, public MAknTouchPaneObserver

class CAknAppUiBase : public CEikAppUi

class CEikAppUi : public CCoeAppUi, public MEikMenuObserver, public MCoeMessageObserver                                , public MObjectProvider

class CCoeAppUi : public CBase

 

Application继承关系:CShowContactApplication is owner class.

class CShowContactApplication : public CAknApplication

class CAknApplication : public CEikApplication

class CEikApplication : public CApaApplication

class CApaApplication : public CBase

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值