通用多任务嵌入式菜单系统 ( minitos Menu)设计说明 minitos Menu 采用和Windows一样的菜单设计API,快速设计嵌入式菜单系统。可以根据所选择的菜单触发一个子程序运行。(酷吧,像delphi的事件函数一样J ) 文档编写: LinLS 创建日期:2003-8-19 最后修改:2008-2-15 @福州福拓电子科技有限公司 minitos就是 mini Task OS. 一、 说明 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); } }
|