系统字体获得:
CCoeEnv::Static()->NormalFont()
CEikonEnv::Static()->AnnotationFont()
CEikonEnv::Static()->TitleFont()
CEikonEnv::Static()->LegendFont()
CEikonEnv::Static()->SymbolFont()
CEikonEnv::Static()->DenseFont()
全局变量:
#include <coemain.h>
LIB: cone.lib
引用实例,取全局AppUI:
CMainShellAppUi* appUi = static_cast<CMainShellAppUi*>(CCoeEnv::Static()->AppUi());
*****************************************************************************************
CONE分析初步
1.1 继承关系
CEikonEnv --> CCoeEnv ,MApaAppStarter -->CActive, CBase.
这个类本身是不能用来被继承的。主要的作用是给所有的 Uikon 的 controls 提供一个运行的环境。这些环境包括很多项,比如说环境字体,环境图片,资源文件等等。所以 CEikonEnv 提供一系列的工具函数,用于使用这些空间。每个 Uikon 的 appication 都有一个由 application framework 提供的 CEikonEnv 的实例,在 application 中可以用
CEikonEnv::Static() 或者 EikApplication 的宏 iEikonEnv 来使用这个 CEikonEnv 。
1.2 功能分析
CEikonEnv提供了一系列的功能。包括:
【Text的处理】
·取得当前的环境(enviroment)字体:
const CFont* font = iEikonEnv->NormalFont();
· 取得当前的环境(enviroment)标准符号字体:
const CFont* font = iEikonEnv-SymbolFont();
·类似的字体函数:
AnnotationFont() / TitleFont() / LegendFont() /DenseFont() ;
【AlertWin的处理】
iEikonEnv->AlertWin(text);用于显示一个alert windows。
【Resource readers 和 resource files】
·根据 resourceId 把资源文件的内容读取到 TBuf 中:
CEikonEnv 提供了一系列的函数来读取资源文件的内容,基本的函数用法如下
TBuf<KAknExFormTitleBufLength> titleText( NULL );
iEikonEnv->ReadResource( titleText, resourceId );
· 根据 resourceId 把资源文件的内容读取到一个resource reader中:
这个 resource reader 可以用于后续之用,这个 resource reader 被放置在cleanup stack上。
这个 resource reader 的主要作用在可以通过资源文件创建控件,如下:
CCoeControl::ConstructFromResourceL();
【Access(访问函数)】
·在这个范围内主要的函数是:AppUiFactory()。这个函数的主要作用是返回一个
MEikAppUiFactory 对象指针,This class defines a mixin interface to break
the dependency of the Uikon Application User Interface on controls。用法如下所示:
CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
这样就获得了 application 的 status spane,通过这个指针就可以访问其他 sub status spane,如下:
CAknTitlePane* titlePane = (CAknTitlePane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
这样,就可以在运行的时候动态更改status spane的内容。
另外,如果appui继承自CEikAppui,那么可以采用下面的方法:
CEikStatusPane *sp = ((CAknAppUi*)iEikonEnv->EikAppUi())->StatusPane();