开发学院手机开发Symbian 开发 Symbian 学习之对话框简介 阅读

Symbian 学习之对话框简介

 2010-03-19 15:48:00 来源:WEB开发网   
核心提示:MENU_ITEM { command = ESimpleDlgCmdPrepare; txt = qtn_appl_prepare; },MENU_ITEM { command = ESimpleDlgCmdPreLayout; txt = qtn_appl_prelayout; },MENU_ITEM { comm

MENU_ITEM { command = ESimpleDlgCmdPrepare; txt = qtn_appl_prepare; },

MENU_ITEM { command = ESimpleDlgCmdPreLayout; txt = qtn_appl_prelayout; },

MENU_ITEM { command = EAknCmdExit; txt = qtn_appl_exit; }

};

}

//MySimpleDlg.hrh

enum TMySimpleDlgCommandIds

{

ESimpleDlgCmdDialog = 1,

ESimpleDlgCmdPrepare,

ESimpleDlgCmdPreLayout

};

3.动态地初始化标准对话框

对话框的子控件在定义时被赋予初始值,但在某些情况下应用程序需要在执行对话框之前根据情况改变子控件的值,有两种方法:

第一种:使用PrepareLC()函数和RunLD()函数

ExecuteLD()函数内部首先调用PrepareLC()函数从资源中加载对话框,然后调用RunLD()函数弹出对话框,因此可以在这两个函数之间加入初始化对话框的代码,本节MySimpleDlg示例程序 MySimpleDlgAppUi.cpp文件中代码如下:

#include

void CMySimpleDlgAppUi::HandleCommandL(TInt aCommand)

{

switch ( aCommand )

{

......

case ESimpleDlgCmdPrepare:

{

CAknDialog* dialog = new(ELeave)CAknDialog;

dialog->PrepareLC(R_SIMPLEDLG_DIALOG); //从资源文件中加载对话框

CEikLabel* label = static_cast(dialog->Control(ESimpleDlgCtlLabel)); //获取对话框 的子控件的指针

_LIT(KMyLabel,"Changed after PrepareLC()");

label->SetTextL(KMyLabel()); //修改子控件的值

dialog->RunLD();

break;

}

.......

// TODO: Add Your command handling code here

default:

break;

}

}

注意:需要在.mmp文件中加入eikdlg.lib

第二种方法:使用PreLayoutDynInitL()函数或PostLayoutDynInitL()函数

该方法需要自定义对话框类,并重载 CEikDialog::PreLayoutDynInit()函数和CEikDialog::PostLayoutDynInitL()函数。这两个函数都是虚函数,他们会在显示对话框之前被调用。其中对话框完成控件布局会调用PreLayoutDynInitL()函数,因此该函数常用于完成可能会影响对话框布局的初始化操作,例如创建新的控件。对话框完成布局之后会调用PostLayoutDynInitL()函数,该函数用于实现不影响对话框布局的操作,如为控件赋值等。

上一页  1 2 3 4 5 6 7  下一页

Tags:Symbian 学习 对话框

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接