zoukankan      html  css  js  c++  java
  • 对话框的练习

    对话框的练习

    写一对话框的 rss 资源

    RESOURCE DIALOG r_my_dlg
        {
            flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
            EEikDialogFlagFillAppClientRect|EEikDialogFlagCbaButtons |EEikDialogFlagWait
            |EEikDialogFlagNotifyEsc;
            buttons = r_my_dia_button;
            items={
                    DLG_LINE
                        {
                            id = ESimpleDlgCtlLabel;
                            type = EEikCtLabel;
                            control = LABEL{
                            txt = "this is a simple dialog";
                            };
                        },
                    DLG_LINE
                        {
                            id = 10;
                            type = EEikCtEdwin;
                            control = EDWIN
                                {
                                    width=10;
                                    lines =1 ;
                                    maxlength = 10;
                                };
     
                        }
            };
        }
     
    RESOURCE CBA r_my_dia_button
        {
            buttons = {
                    CBA_BUTTON{
                        id = 6;
                        txt = "ok";
                    },
                    CBA_BUTTON
                        {
                        id = 7;
                        txt = "close";
                        }
            };
        }

    调用代码

    CAknDialog* dl = new(ELeave)CMyDialog;
    /* dl->PrepareLC(R_MY_DLG);
    CEikLabel* label = static_cast<CEikLabel*>(dl->Control(ESimpleDlgCtlLabel));
    label->SetTextL(_L("hello"));
    if (dl->RunLD())
    */
    if (dl->ExecuteLD(R_MY_DLG))
    {
    iEikonEnv->InfoMsg(_L("Button ok"));
    }
    else
    {
    iEikonEnv->InfoMsg(_L("Button cancel"));
    }
     
     

    这里用到自定义对话框了,自定义对话框从 CAknDialog 继承过来,代码如下
    class CMySimpleDialog : public CAknDialog
    {
    protected: // Functions from base classes
    void PreLayoutDynInitL();
    void PostLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
    };
     
     
    #include "CMyDialog.h"
    #include <eiklabel.h>
    #include "Dlgtest.hrh"
    #include <akndialog.h>
    #include <eikenv.h>
    CMyDialog::CMyDialog()
    {
    // TODO Auto-generated constructor stub
    }
    void CMyDialog::PreLayoutDynInitL()
    {
    CEikLabel* label = static_cast<CEikLabel*>(Control(ESimpleDlgCtlLabel));
    label->SetTextL(_L("aaa"));
    }
    void CMyDialog::PostLayoutDynInitL()
    {
    }
    TBool CMyDialog::OkToExitL(TInt aButtonId)
    {
    TBool ret = CAknDialog::OkToExitL(aButtonId);
    CEikonEnv* env = CEikonEnv::Static();
    if (aButtonId == 6)
    {
    env->InfoMsg(_L("ok to exit"));
    }
    else
    {
    env->InfoMsg(_L("cancel to exit"));
    ret = EFalse;
    }
    return ret;
    }
    CMyDialog::~CMyDialog()
    {
    // TODO Auto-generated destructor stub
    }

    如果是自定义的对话框同时继承了  OkToExit 方法,可以通过改写这个方法的返回值来决定是不是需要关闭这个对话框,

    返回 ETrue 则关闭对话框,否则继续显示对话框,注意对于等待的对话框来说,代码会停在那里,非等待的对话框来说,

    代码继续执行,但对话框不消失

  • 相关阅读:
    oracle 数据库安全审计
    oracle 共享服务器监控
    oralce MTS
    配置一个Oracle共享服务器进程环境需要哪两项参数
    python3 小技巧(2)
    python3 操作注册表
    PYC文件简介
    常见HTTP状态(304,200等)
    用Python模拟浏览器操作
    python3下的IE自动化模块PAMIE
  • 原文地址:https://www.cnblogs.com/zziss/p/1740208.html
Copyright © 2011-2022 走看看