Symbian C++学习之——菜单基础
2009-04-08 19:56
423 查看
菜单是向用户展示列表的窗口,菜单由多个称作菜单项的行组成,每个菜单项含有一个文本标签。用户选择某个菜单项时调用相应的命令。
SimpleMenu实例如下图所示:
在SimpleMenu.rss资源文件中定义:
RESOURCE EIK_APP_INFO
{
menubar = r_simplemenu_menu_bar;
cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
}
RESOURCE MENU_BAR r_simplemenu_menu_bar
{
titles =
{
MENU_TITLE
{
txt = ""; //Series 60中不使用用作菜单标题的文本
menu_pane = r_simplemenu_menu_pane;
}
};
}
RESOURCE MENU_PANE r_simplemenu_menu_pane
{
items =
{
MENU_ITEM
{
command = ESimpleMenuCmdNewGame;
txt = qtn_simplemenu_newgame;
cascade = r_simplemenu_submenu_pane; //定义子菜单
},
MENU_ITEM
{
command = EAknCmdExit;
txt = qtn_simplemenu_exit;
}
};
}
RESOURCE MENU_PANE r_simplemenu_submenu_pane
{
items =
{
MENU_ITEM
{
command = ESimpleMenuCmdGame1;
txt = qtn_simplemenu_submenu_game1;
},
MENU_ITEM
{
command = ESimpleMenuCmdGame2;
txt = qtn_simplemenu_submenu_game2;
}
};
}
在SimpleMenu.rls中定义字符串:
#define qtn_simplemenu_newgame "New Game"
#define qtn_simplemenu_exit "Exit"
#define qtn_simplemenu_submenu_game1 "Game 1"
#define qtn_simplemenu_submenu_game2 "Game 2"
在SimpleMenu.hrh文件中定义菜单命令枚举:
enum TSimpleMenuIds
{
//自定义枚举应该从0x6000开始,避免与系统命令冲突
ESimpleMenuCmdNewGame = 0x6001,
ESimpleMenuCmdGame1,
ESimpleMenuCmdGame2
};
处理菜单命令对于派生CAknAppUi或CAknView的类应使用HandleCommandL()方法,对于派生于CAknDialog的类则应该使用ProcessCommandL()。
在SimpleMenu实例中CSimpleMenuAppUi派生于CAknAppUi,所以重写了CSimpleMenuAppUi中的HandleCommandL()方法:
void CSimpleMenuAppUi::HandleCommandL(TInt aCommand)
{
switch (aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case ESimpleMenuCmdNewGame:
//
break;
case ESimpleMenuCmdGame1:
//
break;
case ESimpleMenuCmdGame2:
//
break;
default:
Panic(ESimpleMenuUi);
break;
}
}
SimpleMenu实例如下图所示:
在SimpleMenu.rss资源文件中定义:
RESOURCE EIK_APP_INFO
{
menubar = r_simplemenu_menu_bar;
cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
}
RESOURCE MENU_BAR r_simplemenu_menu_bar
{
titles =
{
MENU_TITLE
{
txt = ""; //Series 60中不使用用作菜单标题的文本
menu_pane = r_simplemenu_menu_pane;
}
};
}
RESOURCE MENU_PANE r_simplemenu_menu_pane
{
items =
{
MENU_ITEM
{
command = ESimpleMenuCmdNewGame;
txt = qtn_simplemenu_newgame;
cascade = r_simplemenu_submenu_pane; //定义子菜单
},
MENU_ITEM
{
command = EAknCmdExit;
txt = qtn_simplemenu_exit;
}
};
}
RESOURCE MENU_PANE r_simplemenu_submenu_pane
{
items =
{
MENU_ITEM
{
command = ESimpleMenuCmdGame1;
txt = qtn_simplemenu_submenu_game1;
},
MENU_ITEM
{
command = ESimpleMenuCmdGame2;
txt = qtn_simplemenu_submenu_game2;
}
};
}
在SimpleMenu.rls中定义字符串:
#define qtn_simplemenu_newgame "New Game"
#define qtn_simplemenu_exit "Exit"
#define qtn_simplemenu_submenu_game1 "Game 1"
#define qtn_simplemenu_submenu_game2 "Game 2"
在SimpleMenu.hrh文件中定义菜单命令枚举:
enum TSimpleMenuIds
{
//自定义枚举应该从0x6000开始,避免与系统命令冲突
ESimpleMenuCmdNewGame = 0x6001,
ESimpleMenuCmdGame1,
ESimpleMenuCmdGame2
};
处理菜单命令对于派生CAknAppUi或CAknView的类应使用HandleCommandL()方法,对于派生于CAknDialog的类则应该使用ProcessCommandL()。
在SimpleMenu实例中CSimpleMenuAppUi派生于CAknAppUi,所以重写了CSimpleMenuAppUi中的HandleCommandL()方法:
void CSimpleMenuAppUi::HandleCommandL(TInt aCommand)
{
switch (aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case ESimpleMenuCmdNewGame:
//
break;
case ESimpleMenuCmdGame1:
//
break;
case ESimpleMenuCmdGame2:
//
break;
default:
Panic(ESimpleMenuUi);
break;
}
}
相关文章推荐
- Symbian C++学习笔记连载一:Symbian基础知识
- 嵌入式开发之C++基础学习笔记2--总结所有基础用法
- c++学习笔记之线程基础
- C++基础学习5:强制类型转换
- C++学习基础之基类和派生类
- [学习笔记]C和C++中指针的基础知识点(二)
- C++基础的不能再基础的学习笔记——类(二)
- C++学习8-面向对象编程基础(模板)
- C/C++之基础学习笔记
- 【C++】学习笔记草稿版系列3(引用基础与提高)
- 【C++学习笔记】文件操作编程基础
- C++学习基础六——复制构造函数和赋值操作符
- C/C++学习笔记:基础知识7
- C++基础学习-20120515
- 感觉还有好多的C++基础知识要去学习
- 分享C++基础和MFC编程的优秀学习资料
- C++基础学习系列--1、1的简陋版本--输入输出流与字符串变量的使用
- C++基础学习—面向对象基础
- 程序开发基础学习二(C++ Google Style 命名规则)
- C++基础知识学习笔记