学习SYMBIAN 对话框

1、非阻塞提示框
symbian定义了几个提示类,分别是:
confirm类:CAknConfirmationNote
info类: CAknInformationNote
warning类:CAknWarningNote
error类: CAknErrorNote
头文件:aknnotewrappers.h
lib:avkon.lib eikcdlg.lib eikctl.lib

使用方法:

Code:
TBuf<32> buf;
    buf.Copy(_L("info note"));
    CAknInformationNote* iInfoNote = new (ELeave) CAknInformationNote;
    iInfoNote->ExecuteLD(buf);

2、阻塞提示框
void CEikonEnv::AlertWin(const TDesC& aMsg);
void CEikonEnv::AlertWin(const TDesC& aMsg1,const TDesC& aMsg2);
static void CEikonEnv::InfoWinL(const TDesC& aFirstLine,const TDesC& aSecondLine);

AlertWin为CEikonEnv类的非静态成员函数,InfoWinL为CEikonEnv类的静态成员函数。
AlertWin只能在ui、view和container中使用,使用方法如下:

Code:
iEikonEnv->AlertWin(_L("text"));

InfoWinL可以在任意类中使用,使用方法如下:
Code:
CEikonEnv::Static()->InfoWinL(_L("note:"), _L("text"));

为方便使用,常定义宏来使用这类提示框,如:

Code:
#define DEBUG_DIALOG(x) iEikonEnv->AlertWin(##x);
#define DEBUG_DIALOG1(x) CEikonEnv::Static()->InfoWinL(_L("note:"), ##x);
#define DEBUG_DIALOG2(x,y) CEikonEnv::Static()->InfoWinL(##x, ##y);

可以这么使用:
TBuf<32> buf;
buf.Copy(_L("test"));
DEBUG_DIALOG(buf);
DEBUG_DIALOG1(buf);
DEBUG_DIALOG2(buf,_L("text"));

此类提示框阻塞线程,只有用户按键退出提示框后,后面的程序才能接着运行。

3、进度条对话框
进度条对话框类为:
CAknProgressDialog
头文件:aknprogressdialog.h
lib: avkon.lib eikcdlg.lib eikctl.lib

使用方法:

Code:
//初始化进度条
CAknProgressDialog* iProgressDialog;
CEikProgressInfo* iProgressInfo;
    iProgressDialog = new ( ELeave ) CAknProgressDialog( reinterpret_cast
                                                         <CEikDialog**>
                                                         ( &iProgressDialog ) );
    iProgressDialog->SetCallback( this );
    iProgressDialog->PrepareLC( R_RESOURCE_PROGRESS_NOTE );    //从资源文件构造对话框,资源见下面的定义
    iProgressInfo = iProgressDialog->GetProgressInfoL();
    iProgressInfo->SetFinalValue( aMaxValue );    //设置进度条的最大值(结束值)
    iProgressDialog->RunLD();
  
    //更新进度条
    iProgressInfo->IncrementAndDraw( aStep );  

//结束进度条
iProgressDialog->ProcessFinishedL();
delete iProgressDialog;

RESOURCE DIALOG R_RESOURCE_PROGRESS_NOTE    //进度条对话框资源
      {
      flags = EAknProgressNoteFlags;
      buttons = R_AVKON_SOFTKEYS_CANCEL;
      items =
          {
          DLG_LINE
              {
              type = EAknCtNote;
              id = EMagicBoxCtrlIdProgressNote;
              control = AVKON_NOTE
                  {
                  layout = EProgressLayout;
                  singular_label = "对话框中显示的文字";
                  plural_label = "download";
                  imagefile = AVKON_BMPFILE_NAME;     //第二版中 图标文件为 #define AVKON_BMPFILE_NAME "z://system//data//avkon.mbm"
                  imageid = EMbmAvkonQgn_note_sml;    //这两项可更改显示不同图标
                  imagemask = EMbmAvkonQgn_note_sml_mask;
                  };
              }
          };
      }

4、等待对话框
等待对话框要用到的类:
CAknGlobalNote
头文件:aknglobalnote.h
lib:aknnotify.lib eiksrv.lib

使用方法:

Code:
//显示等待对话框
    CAknGlobalNote* globalNote = CAknGlobalNote::NewL();
    CleanupStack::PushL( globalNote );
    TInt iWaitNoteId = globalNote->ShowNoteL( EAknGlobalWaitNote, _L("对话框中显示的文字") );
    CleanupStack::PopAndDestroy();
  
    //结束等待对话框
    CAknGlobalNote * note = CAknGlobalNote::NewL();
    CleanupStack::PushL( note );
    note->CancelNoteL( iWaitNoteId );
    CleanupStack::PopAndDestroy();

注:
CAknGlobalNote类除了显示等待对话框外还可显示多种类型的全局对话框,具体类型可通过ShowNoteL的第一个参数指定,可能的类型如下:


Code:
enum TAknGlobalNoteType
{
EAknGlobalInformationNote = 1,
EAknGlobalWarningNote,
EAknGlobalConfirmationNote,
EAknGlobalErrorNote,
EAknGlobalChargingNote,
EAknGlobalWaitNote,
EAknGlobalPermanentNote,
EAknGlobalNotChargingNote,
EAknGlobalBatteryFullNote,
EAknGlobalBatteryLowNote,
EAknGlobalRechargeBatteryNote,
EAknCancelGlobalNote,
EAknGlobalTextNote
};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brew2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值