/*
minitos Menu 采用和Windows一样的菜单设计API,快速设计嵌入式菜单系统。
可以根据所选择的菜单触发一个子程序运行。(酷吧,像windows的事件函数一样 )
minitos就是 mini Task OS.
http://www.dianzixuexi.com 电子学习网
minitos 嵌入操作系统 : http://www.dianzixuexi.com minitos相关频道
minitos Windows C++嵌入图形系统 http://www.dianzixuexi.com
Copyright (C) 福州福拓电子科技有限公司
本文实现minitos Menu 的main入口,测试使用
created by Linls,2003.12
*/
/*
菜单使用例子
void MenuTest_Entry(void)可以作为一个菜单任务运行
*/
#include "Menu.h"
PMENUPOPUP pMenuSystem;
PMENUPOPUP pMenuBook;
/*
建立一个给菜单用的任务实例
返回建立的实例只能给一个进程使用,这是多任务菜单中防止多任务冲突使用
如果只是一个任务重使用菜单,就不需要该实例了,直接返回NULL即可.
*/
HINST CreateTestInst(void)
{
return (HINST)NULL;
}
/*
显示菜单,如果没有菜单则显示主界面
*/
void Menu_OnDisplay(HINST hInst)
{
MENU_INST * p=(MENU_INST * )hInst;
if(p->sg_pCurrMenuItem == NULL)
{
/*不处于菜单状态
*/
MO_Display(" Main Test\r\n");
}else
{
/*处于菜单状态则显示菜单
*/
MenuDisplay(hInst);
}
}
/*执行菜单函数*/
void ExecMenuFunc(HINST hInst,char c)
{
UINT uiMenuID;
uiMenuID = MenuSelect(hInst,c);
switch(uiMenuID)
{
case 10:
break;
case 11:
break;
}
}
void MenuTest_Entry(void)
{
char c;
HINST hInst_Menu,hInst_Test;
/*建立一个任务实例
在多任务中,可能有多个视窗,每个任务可能有不同的菜单,
各个任务的切换不能破环菜单
*/
hInst_Test = CreateTestInst();
/*建立一个菜单实例,该菜单实例是在本任务实例下运行的 */
hInst_Menu = CreateMenuInst(hInst_Test);
/*建立一个主菜单 */
pMenuSystem =(PMENUPOPUP) CreateMenu_System3();
/*建立一个菜单2 */
pMenuBook =(PMENUPOPUP) CreateMenu_System2();
while(1)
{
Menu_OnDisplay(hInst_Menu);
c=getchar();
/*.............................................................
菜单处理 开始
*/
if(c=='a')
{
/* 测试主菜单
*/
MenuStart(hInst_Menu, (HMENU)pMenuSystem);
continue;
}else
if(c=='b')
{
/* 测试菜单2
*/
MenuStart(hInst_Menu, (HMENU)pMenuBook);
continue;
}
ExecMenuFunc(hInst_Menu,c);
/*菜单处理 结束
.............................................................
*/
}
}
void main(void)
{
/* 菜单任务工作开始
*/
MenuTest_Entry();
}
|