搜索产品 minitos开源嵌入式操作系统 minitos Windows minitos Menu
首 页 产品展厅 精品文章 嵌入式资讯 下载中心 论坛 嵌入式城市 技术应用
 收藏社区
 免费注册
 用户登陆
 帮助中心
社区首页 业界新闻 精品文章 下载中心 minitos2站 在线学习 论坛 嵌入式提问交流学习 供求信息 留言 minitos操作系统 测试
今天是:2010年9月9日 星期四   您现在位于: miniTOS生活社区 →  设计说明-通用多任务嵌入式菜单系统 ( minitos Menu)
谷歌搜本站效率更高
设计说明-通用多任务嵌入式菜单系统 ( minitos Menu)
2009年3月24日  作者:  发布人:专业嵌入式网站      本文已被浏览 205 次
  通用多任务嵌入式菜单系统 ( minitos Menu)设计说明

minitos Menu 采用和Windows一样的菜单设计API,快速设计嵌入式菜单系统。可以根据所选择的菜单触发一个子程序运行。(酷吧,像delphi的事件函数一样 )

文档编写: LinLS  创建日期:2003-8-19 最后修改:2008-2-19

minitos就是 mini Task OS,意思是迷你的rTOS.

http://www.minitos.com   网minitos嵌入开发网主站
http://www2.minitos.com 网 minitos嵌入开发网2站
http://net.minitos.com   网 minitos嵌入开发网网络站
http://www2.minitos.com/bbs 嵌入式论坛
http://ask.embed.cc 嵌入式提问吧

minitos ® 嵌入操作系统 : http://www.minitos.com/index.htm
minitos ® Windows C++嵌入图形系统 http://www.minitos.com/index.htm

一、 说明
minitos Menu通用菜单系统原来本是minitos Windows的一部分,后来由于有需求,因此单独提取出来作为一个独立的模块供嵌入式菜单开发使用。并且已经在IC卡校园一卡通设备,金融POS机,税控设备,网络电话等设备上有应用。
二、 特点
1) minitos Menu 作为单独的一个模块可方便进行移植到不同的系统
2) 所有API都和Windows系统的菜单类似。
3) 可快速构建菜单
4) 免费开放源代码

三、 建立菜单的相关API

1)
MENUAPI HMENU InitMenuItemList(MENUITEM pItem[],UINT uiNum)

功能
初始化菜单项列表,如上面的ItemExp[2],并建立一个POPUP菜单指向该列表
uiNum --菜单项列表的项数
Input:  pItem --指向菜单项列表的第一项
    uiNum --列表由多少项
return : 返回该POPUP菜单的指针

例子:
先定义一个菜单项
MENUITEM Top[3] = {
 //Name,    ID ,  Type,SubMenu, Key, bExit, Func, EnterFunc pNext, pPrev

 {"Top1",   0,    0,    0,       0,   TRUE  ,NULL, NULL,NULL, NULL},
 {"Top2",   0,    0,    0,       0,   TRUE  ,NULL, NULL,NULL, NULL},
 {"Top3",   0,    0,    0,       0,   TRUE  ,NULL, NULL,NULL, NULL}

};

利用定义的菜单项建立一个菜单
HMENU CreateMenu_System3 (void)      
{
 HMENU pMenuTop,hMenu;

 pMenuTop =InitMenuItemList(Top,3);
 
 return pMenuTop;
}

2) 
HMENU CreatePopupMenu (void)
/////////////////////////////////////////////////////////////////////
//建立一个空的POPUP菜单
//return : 返回该 POPUP菜单
/////////////////////////////////////////////////////////////////////

3) 
BOOL AppendMenu(HMENU hMenu,UINT flags,UINT ItemID,char * lpContent)
/////////////////////////////////////////////////////////////////////
//在一个POPUP菜单上最后的项再追加一个菜单项,同Window类似
//Input: hMenu --要追加的POPUP菜单
//   flags -- MF_POPUP 表示追加的项为POPUP菜单
//      其他(MF_ENABLE)  表示追加 的是普通菜单项
//  ItemID -- 如果flags为MF_POPUP ,则该项表示为POPUP菜单项指针
//      如果flags为其他 ,则该项表示为菜单项的ID
//  lpContent--菜单项名
//return : TRUE --成功
/////////////////////////////////////////////////////////////////////

4) 
//设置菜单项参数
MENUAPI void SetMenuItemParam(PMENUITEM pItem,UINT key,BOOL bExit,void (*Func)(void))

5)
MENUAPI void SetMenuItem(PMENUPOPUP pPopupIn,PMENUITEM pItem,HMENU hMenu)
/////////////////////////////////////////////////////////////////////
//把一个hMenu菜单挂到上层的一个菜单项pItem中,使之成为一个完整的菜单
//pPopupIn --指向pItem的Popup菜单指针
/////////////////////////////////////////////////////////////////////


6) 
MENUAPI HMENU AppendPopupMenu(HMENU hMenu,char *Title)
//在hMenu的POPUP菜单的菜单项的最后再创建一个POPUP菜单项
//Input: Title --要创建的Popup菜单项名
//       hMenu --
//return : 返回已经创建Popup菜单指针

7)
MENUAPI HMENU DeleteMenuItem(HMENU hMenu,PMENUITEM pItem)
//在菜单中删除一个菜单项pItem
//如果该菜单项为POPUP类型的菜单项,则返回该Popup菜单,否则返回0

8)
MENUAPI void DestroyMenu(HMENU hMenu)
//删除一个Popup菜单


四、 菜单操作过程


1) 启动一个菜单的过程用MenuStart函数。
void MenuStart(HINST hInst, HMENU hMenu)
例子:
Void main(void)
{
  c=getchar();
  if(c=='a')
  { //菜单处理 开始 
   MenuStart( hInst, (HMENU)pMenuTop);
  }
}

 
五、 菜单项数据结构

菜单项的结构如下:
struct tagMENUITEM
{
    char     szName[MENU_MAX_LEN];  //对MFT_STRING该参数,使用szName表示菜单名
    //菜单的ID
    UINT    uiID; 
    //菜单类型,指明是否为MF_POPUP
 UINT uiType;
    PMENUPOPUP   hSubMenu; //是Popup菜单指向MEMUPOPUP,否则为NULL
    UINT  uiKey; //保留
   //调用该菜单后,是否退出菜单
 BOOL bExit;
  //需要在UP/DOWN等就立即运行的函数
 void (*Func) (void);

 void (*EnterFunc) (void); /*  菜单被选择触发运行的函数*/

 struct tagMENUITEM * pNext;  
 struct tagMENUITEM * pPrev;
};


六、 利用资源建立菜单的方式
       
Minitos Menu支持象windows利用资源文件建立菜单的方式,不过没有经过测试不建议使用.有兴趣可以看看。
该文件不在项目中,为单独的一个文件 parseRC.c .

API为 extern void rc__CreatePopupMenu(HMENU hMenu_Top,char Context[]);

资源编写格式如下:
 MyMenu MENU
 {
  ITEM  "Test1", 201
  POPUP "File"
  {
   ITEM "Test2",202
   POPUP "Test3"
   {
    ITEM "Test4",205
   }
  }
 }

 发布人:minitos
 [ → 我要发表文章 ]
上篇文章:通用多任务嵌入式菜单系统例子说明
下篇文章:嵌入式菜单系统资源文件abc.rc
→ 主题所属分类:  minitos → 嵌入式菜单minitosMenu → 『关闭窗口』
 热门文章
 
 skyeye安装运行的详细方法--step by step (20693)
 cygwin下安装arm-elf-gcc一种简便方法 (5876)
 充电器设计及镍氢电池充电方法2 (3373)
 镍氢电池充电方法及充电器(二) (2545)
 Instruction Set: Analysis of SH66x... (2309)
 FAT16文件系统格式详细说明 (2132)
 充电器设计及镍氢电池充电方法1 (1931)
 使用GDB-gnu debug (1689)
 单片机数码管显示驱动设计 (1678)
 一步一步的制作 arm-linux 交叉编译环境 (1577)
 最近更新
 
 QTE 4安装方法 (6月3日)
 真是好文,fc6安装qte,共享 (6月3日)
 超低价部分原装IGBT销售 (6月2日)
 Protel99SE快捷键大全 (6月2日)
 Protel 99 SE的功能特性 (6月2日)
 Protel 99 SE的系统组成 (6月2日)
 设计PCB时抗静电放电(ESD)的方法 (6月2日)
 模拟集成电路 (6月2日)
 数字集成电路 (6月2日)
 语音集成电路 (6月2日)
 文章搜索
 
搜索选项:            
  → 评论内容 (点击查看)
(没有相关评论)
  → 发表我的评论
您的姓名:  您的E-mail:

评论内容:
发表评论:  
娱乐中心 ┋ 关于本站 ┋ 站内短信 ┋ 广告服务 ┋ 友情链接 ┋ 与我在线 ┋ 版权声明  TOP
本站总访问量: 196339 人次 ┋ 最高峰 589 人在线 ┋ 当前有 9 人在线
专业嵌入式网站 [完整型] ┋页面执行时间:156.250 毫秒
Copyright © 2002-2005 minitos.com All Rights Reserved
友情链接: embed嵌入开发网 ┋ 嵌入式提问网 ┋ 嵌入式资料网 ┋ 网络站 ┋ 论坛 ┋