⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 这是一个支持"微型嵌入式 GUI" 的 SDK For Linux 版,其 GUI 核心可于 Linux, DOS 16/32 Bit, uC/OS-II及Windows 等平台工作,支持常用
💻 C
字号:
/*
MainMenu,PopMenu - 菜单
www.ecub2006.com
*/
#include "gui.h" /* GUI 的头文件 */

#define FILE_ITEM_NUM 5 /* 项目数*/
#define EDIT_ITEM_NUM 3

MENU mymenu_file[]={ /* 菜单项目 */
{0,"New",0,0},
{1,"Open",0,0},
{2,"Save",0,0},
{3,"Save as",0,0},
{4,"Exit",0,0}
};

MENU mymenu_edit[]={ /* 菜单项目 */
{0,"Copy",0,0},
{1,"Cut",0,0},
{2,"Paste",0,0}
};

void MyWin(HAND hd,MESSAGE msg) /* 窗口的消息处理函数 */
{
HAND box;/* 句柄 */
int i;
if(msg.type == GM_SYSTEM)/* 判断消息类型,消息类型全部为大写  */
	switch(msg.message)/* 判断消息 */
	{
	case GM_Create:/* 对象被创建后产生该消息,一般情况下,收到该消息时,
                对象还没有显示。可以在这里进行一些初始化工作。
				如果是窗口的GM_Create消息,可以创建新的对象,如 BUTTON 等 */
                
				
				CreateObject(hd,BUTTON,1,1,"BUTTON_A",10,100,120,120,0,0);
				 
                /* 创建一个下拉菜单(主菜单)*/
				box=CreateObject(hd,MAINMENU,1,1,"File",10,50,70,70,0,0);
		       
				for(i=0;i<FILE_ITEM_NUM;i++) 
		        efMainMenu->Add(box,&mymenu_file[i]); /* 添加菜单项目*/

                /* 创建一个下拉菜单(主菜单)*/
                box=CreateObject(hd,MAINMENU,2,1,"Edit",80,50,150,70,0,0);
				for(i=0;i<EDIT_ITEM_NUM;i++)
		        efMainMenu->Add(box,&mymenu_edit[i]); /* 添加菜单项目*/
                 
                /* 创建一个弹出式菜单 */
				box=CreateObject(hd,POPMENU,3,1,"",80,50,150,70,0,0);
				for(i=0;i<EDIT_ITEM_NUM;i++)
		        efPopMenu->Add(box,&mymenu_edit[i]); /* 添加菜单项目*/
				/* 弹出式菜单创建后,并不显示。
				当使用 efPopMenu->Pop(HAND,int x,int y); 激活后,就会出现. 
				一但鼠标点击了 菜单以外的区域,菜单就会马上消失。
				等待下次激活。
				*/
				SetObjVar(hd,box);/* 句柄保存到 自定义数据 */

		return;
	default:return;
	}
if(msg.type == GM_CTRL && msg.message ==GM_MenuItem)
	{
	  /* 菜单的某一项目被单击后,将产生GM_CTRL类 GM_MenuItem 消息,
	     msg.icode 中保存 菜单对象的ID, msg.jcode 中保存 菜单子项目的 ID */
	    if((int)msg.icode==1)
		MessageBox(0,"菜单",mymenu_file[(int)msg.jcode].szTitle,0);     
        
		if((int)msg.icode==2)
        MessageBox(0,"菜单",mymenu_edit[(int)msg.jcode].szTitle,0);     		

		if((int)msg.icode==3)
        MessageBox(0,"弹出菜单",mymenu_edit[(int)msg.jcode].szTitle,0);     		
		return;


	}
if(msg.type == GM_MOUSE && msg.message ==GM_RightDown)
	{
    box=GetObjVar(hd);
	efPopMenu->Pop(box,(int)msg.icode,(int)msg.jcode);
	}
}

int gmain(void *data)
{
	/* 创建窗口 */
	CreateObject(0,MAINWINDOW,1,1,"Menu",10,10,630,300,MyWin,0);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -