// -----------------------------------------------------------------------------
//
// 这是我的第一篇博文,我也是刚开始学习Symbian c++ 同大家一起努力
// 谨以此文献给我的最爱 YY女孩(YY 可别想坏了哦)
// 感谢linzhiji http://blog.csdn.net/linzhiji/archive/2010/02/25/5321898.aspx
//
// -----------------------------------------------------------------------------
//
实现对话框
S60环境中实现对话框有两个阶段:
①在.rss文件中定义对话框资源
②定义CAknDialog的子类,并实行其中部分虚方法
自己建一个默认的工程(IDE carbide C++ V2.0)下 关于 About对话框有如下代码
这里告诉大家一点博客心得,代码先在Word中粘贴,再粘贴在论坛就可以出现这样的效果,否则格式很是难看。
// -----------------------------------------------------------------------------
//
// About dialog resource.
//
// -----------------------------------------------------------------------------
//
RESOURCE DIALOG r_about_query_dialog
{
flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
items=
{
DLG_LINE
{
type = EAknCtPopupHeadingPane;
id = EAknMessageQueryHeaderId;
itemflags = EEikDlgItemNonFocusing;
control = AVKON_HEADING
{
};
},
DLG_LINE
{
type = EAknCtMessageQuery;
id = EAknMessageQueryContentId;
control = AVKON_MESSAGE_QUERY
{
};
}
};
}
不明白含义 可以参照Dialog的资源定义
对话框资源定义
对话框资源定义使用DIALOG结构,它在eikon.rh中定义:
STRUCT DIALOG
{
LONG flags=0;
LTEXT title="";
LLINK pages=0;
LLINK buttons=0;
STRUCT items[];
LLINK form=0;
}
Dialog flags
DIALOG中的flags指定了对话框类型。flags的值在eikon.hrh和avkon.hrh中定义。具体含义我在网上还没找到,不过根据英文应该可以明白设置的是什么类型的Dialog。
Items — dialog lines
对话框行结构在eikon.rh中定义:
STRUCT DLG_LINE
{
WORD type;
LTEXT prompt;
WORD id=0;
LONG itemflags=0;
STRUCT control;
LTEXT trailer="";
LTEXT bmpfile = "" ;
WORD bmpid = 0xffff ;
WORD bmpmask ;
LTEXT tooltip = "" ;
}
Buttons — softkeys
软件通过CBA资源来定义。下面是avkon.rsg中的预定义软键:
#define R_AVKON_SOFTKEYS_EMPTY 0x8cc0010
#define R_AVKON_SOFTKEYS_EMPTY_WITH_IDS 0x8cc0011
#define R_AVKON_SOFTKEYS_OK_EMPTY 0x8cc0012
#define R_AVKON_SOFTKEYS_SELECT_CANCEL 0x8cc0013
#define R_AVKON_SOFTKEYS_OK_CANCEL 0x8cc0014
#define R_AVKON_SOFTKEYS_OK_DETAILS 0x8cc0015
#define R_AVKON_SOFTKEYS_CALL_CANCEL 0x8cc0016
#define R_AVKON_SOFTKEYS_OPTIONS_BACK 0x8cc0017
#define R_AVKON_SOFTKEYS_OPTIONS_DONE 0x8cc0018
#define R_AVKON_SOFTKEYS_OPTIONS_CANCEL 0x8cc0019
#define R_AVKON_SOFTKEYS_OPTIONS_EXIT 0x8cc001a
#define R_AVKON_SOFTKEYS_OK_BACK 0x8cc001b
#define R_AVKON_SOFTKEYS_CANCEL 0x8cc001c
#define R_AVKON_SOFTKEYS_BACK 0x8cc001d
#define R_AVKON_SOFTKEYS_CLOSE 0x8cc001e
#define R_AVKON_SOFTKEYS_DONE_BACK 0x8cc001f
#define R_AVKON_SOFTKEYS_DONE_CANCEL 0x8cc0020
#define R_AVKON_SOFTKEYS_SELECT_BACK 0x8cc0021
#define R_AVKON_SOFTKEYS_MARK_BACK 0x8cc0022
#define R_AVKON_SOFTKEYS_UNMARK_BACK 0x8cc0023
#define R_AVKON_SOFTKEYS_YES_NO 0x8cc0024
#define R_AVKON_SOFTKEYS_UNLOCK_EMPTY 0x8cc0025
#define R_AVKON_SOFTKEYS_SAVE_BACK 0x8cc0026
#define R_AVKON_SOFTKEYS_SHOW_CANCEL 0x8cc0027
#define R_AVKON_SOFTKEYS_SHOW_EXIT 0x8cc0028
#define R_AVKON_SOFTKEYS_ANSWER_EXIT 0x8cc0029
#define R_AVKON_SOFTKEYS_EXIT 0x8cc002a
#define R_AVK