
特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接 第48章 MENU-菜单控件 本期教程讲解STemWin支持的菜单控件。 48. 1 菜单控件介绍 48. 2 官方WIDGET_Menu实例 48. 3使用官方GUIBulder建立MENU控件 48. 4 总结 48.1 列表框控件介绍 MENU控件可用于创建若干种菜单。每个菜单项代表一个应用程序命令或子菜单。MENU可水平显示和/或垂直显示。菜单项可使用分隔符进行分组。水平菜单和垂直菜单均支持分隔符。选择一个菜单项会发送WM_MENU消息给菜单的所有者,或打开一个子菜单。如果已启用鼠标支持,则MENU小工具会对菜单项上方的鼠标移动作出反应。 下表显示水平MENU控件带垂直菜单的外观: ![]() 上表显示菜单控件使用其默认效果WIDGET_Effect_3D1L和使用WIDGET_Effect_Simple时的相应外观。菜单控件还可以与所有其他效果配合使用。 48.1.1 菜单消息 为了通知其所有者有关选择一个项或打开一个子菜单的信息,菜单控件将发送WM_MENU类型的消息给其所有者。 WM_MENU:发送此消息的目的是通知菜单的所有者有关选择一个项或打开一个子菜单的信息。已禁用的菜单项将不发送此消息。 WM_MENU中的MENU_MSG_DATA数据结构介绍如下:
下面是一个WM_MENU的简单示例:
MENU_ITEM_DATA:此结构充当一个容器,用于设置或检索有关菜单项的信息,MENU_ITEM_DATA的元素介绍如下:
如果控件具有输入焦点,则它将对下列各键做出反应:
|
48.2 官方WIDGET_Menu实例 官方的这个实例很好的演示了Header的使用,这个例子在模拟器中的位置: ![]() 源码如下(程序中进行了详细的注释):
例子的实际显示效果如下: ![]() |
48.3 使用官方GUIBulder建立MENU控件 官方GUIBulder5.22对MENU控件的支持还不够完善,只能建立简单的菜单,菜单里面具体的子项需要用户自己添加。这里用GUIBulder5.22建立一个如下的界面(分辨率480*272): ![]() MENU控件中选项的添加也比较容易,在MENU控件上右击鼠标,可以看到如下界面: ![]() 添加后具体每个MENU选项的名字左下角这里进行设置: ![]() 设置好以后,将生成的代码复制到模拟器或者开发板上面并稍作修改(生成的代码在本期教程配套的例子中),显示效果如下: ![]() 本期教程主要是跟大家讲解了菜单控件的使用,希望大家可以把本期教程中讲的这两个例子跑跑,然后自己设计一个相关的例子进行试验学习。教程中只是使用了部分的菜单控件API,其它的API大家都可以试试。 |
好东西,谢谢楼主分享 |