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

📄 menu.c

📁 运行于T-engine(采用T-Kernel)之上的例子源代码
💻 C
字号:
/* *	sample_3_1_2_1-menu.C (sample program/筛洁メニュ〖瓷妄婶) * *	(C) Copyright 2003 by Personal Media Corporation. */#include	"sample.h"/* 柒婶マクロ */#define	MIDX(i, j)	(((i) << 8) | (j))#define	MPIDX(i)	(((i) & 0x0000ff00) >> 8)/* 柒婶年眶 */enum MENUPIDX {				/* menu index			*/	MPIDX_EXIT   = 0,		/* [姜位] 废			*/	MPIDX_VIEW   = 1,		/* [山绩] 废			*/	MPIDX_EDIT   = 2,		/* [试礁] 废			*/	MPIDX_WINDOW = 3,		/* [ウィンドウ] 废		*/	MPIDX_TOOL   = 4,		/* [井湿] 废			*/	MENU_PARNUM = 5			/* 另眶				*/};enum MENUIDX {				/* menu index		*/	MIDX_EXIT    = MIDX(MPIDX_EXIT, 1),	/* [姜位]		*/	MIDX_VIEW    = MIDX(MPIDX_VIEW, 0),	/* [山绩]		*/	MIDX_REDRAW  = MIDX(MPIDX_VIEW, 1),	/*    -[浩山绩]		*/	MIDX_EDIT    = MIDX(MPIDX_EDIT, 0),	/* [试礁]		*/	MIDX_TOTRAY1 = MIDX(MPIDX_EDIT, 1),	/*    -[トレ〖へ剩继]	*/	MIDX_TOTRAY2 = MIDX(MPIDX_EDIT, 2),	/*    -[トレ〖へ败瓢]	*/	MIDX_DELETE  = MIDX(MPIDX_EDIT, 3),	/*    -[猴近]		*/	MIDX_WINDOW  = MIDX(MPIDX_WINDOW, 0),	/* [ウィンドウ]		*/	MIDX_TOOL    = MIDX(MPIDX_TOOL, 0),	/* [井湿]		*/	MENU_NUM = 9			/* 另眶				*/};/* 柒婶房离咐 */typedef	struct {			/* メニュ〖悸乖簇眶テ〖ブル	*/	FUNCP fn;			/* 悸乖簇眶(への pointer)	*/	W	idx;			/* 滦炳する悸戎规		*/} MF_TBL;/* 柒婶簇眶プロトタイプ */LOCAL	VOID	set_indi(W pid);LOCAL	VOID	set_enable(W pid);LOCAL	VOID	set_window(VOID);LOCAL	VOID	set_tool(VOID);LOCAL	ERR	cmd_exit(W idx, W pid);LOCAL	ERR	cmd_redraw(W idx, W pid);LOCAL	ERR	cmd_totray(W idx, W pid);LOCAL	ERR	cmd_delete(W idx, W pid);LOCAL	ERR	cmd_window(W idx, W pid);LOCAL	ERR	cmd_tool(W idx, W pid);/* メニュ〖悸乖簇眶テ〖ブル */LOCAL	MF_TBL	mf_tbl[MENU_NUM + 1] = {	/* +1 は姜眉脱 */			{cmd_exit,		MIDX_EXIT},			{NULL,			MIDX_VIEW},			{cmd_redraw,	MIDX_REDRAW},			{NULL,			MIDX_EDIT},			{cmd_totray,	MIDX_TOTRAY1},			{cmd_totray,	MIDX_TOTRAY2},			{cmd_delete,	MIDX_DELETE},			{cmd_window,	MIDX_WINDOW},			{cmd_tool,		MIDX_TOOL},			{NULL,			-1}	/* 姜眉 */		};/* 弓拌恃眶 */EXPORT	W	mymid = -1;		/* menu ID			*//* -------------------------------------------------- メニュ〖年盗(柒婶恃眶) *//* 灌誊の柒推の年盗 */LOCAL	TC	item_0[] = {		/* [姜位]			*/			MC_STR | MC_KEY1, L'E', L'姜', L'位',			TNULL		};LOCAL	TC	item_1[] = {		/* [山绩]			*/			MC_STR, L'山', L'绩',			MC_STR, L'浩', L'山', L'绩',			TNULL		};LOCAL	TC	item_2[] = {		/* [试礁]			*/			MC_STR,	L'试', L'礁',			MC_STR | MC_KEY1, L'C', L'ト', L'レ', L'〖', L'へ', L'剩', L'继',			MC_STR | MC_KEY1, L'V', L'ト', L'レ', L'〖', L'へ', L'败', L'瓢',			MC_STR, L'猴', L'近',			TNULL		};#if	0				/* 柒推踏年盗とする */LOCAL	TC	item_3[] = {		/* [ウィンドウ]			*/			MC_STR, L'ウ', L'ィ', L'ン', L'ド', L'ウ',			TNULL		};LOCAL	TC	item_4[] = {		/* [井湿]			*/			MC_STR, L'井', L'湿',			TNULL		};#endif	/* 0 *//* メニュ〖の年盗 */LOCAL	MENUITEM	mitem[MENU_PARNUM] = {				{0x00000000, 0x00000000, 0, 0, item_0},				{0x00000000, 0x00000000, 0, 0, item_1},				{0x00000000, 0x00000000, 0, 0, item_2},				{0x00000000, 0x00000000, 0, 0, NULL},				{0x00000000, 0x00000000, 0, 0, NULL}			};/* ---------------------------------------------------------------- 柒婶簇眶 *//* * インジケ〖タの肋年 */LOCAL	VOID	set_indi(W pid){	;	/* 澈碰灌誊は泼になし */	return;}/* * 铜跟/稍墙の肋年 */LOCAL	VOID	set_enable(W pid){	W	i;			/* 扦罢				*/	UW	mode ;	/* [试礁]-[トレ〖へ剩继]/[トレ〖へ败瓢]/[猴近] */	if (pid > 0) {		/* 悸乖面 TB_PARTS の联买觉轮を艰评 */		i = b_ccut_txt(pid, 0, NULL, 0);		mode = (i > 0) ? M_ACT : M_INACT;	} else {		mode = M_INACT;	}	b_mchg_atr(mymid, MIDX_TOTRAY1, mode);	b_mchg_atr(mymid, MIDX_TOTRAY2, mode);	b_mchg_atr(mymid, MIDX_DELETE, mode);	return;}/* * [ウィンドウ] メニュ〖の肋年 */LOCAL	VOID	set_window(VOID){	if (b_wget_dmn(&mitem[MPIDX_WINDOW].ptr) >= ER_OK) {		b_mset_itm(mymid, MPIDX_WINDOW, &mitem[MPIDX_WINDOW]);	}	return;}/* * [井湿] メニュ〖の肋年 */LOCAL	VOID	set_tool(VOID){	if (b_oget_vmn(-1, NULL, &mitem[MPIDX_TOOL].ptr, NULL, NULL, NULL, NULL) >= ER_OK) {		b_mset_itm(mymid, MPIDX_TOOL, &mitem[MPIDX_TOOL]);	}	return;}/* ------------------------------------------------------ メニュ〖悸乖簇眶废 *//* * [姜位] */LOCAL	ERR	cmd_exit(W idx, W pid){	doloop = False;	return ER_OK;			/* 撅に ER_OK */}/* * [山绩]-[浩山绩] */LOCAL	ERR	cmd_redraw(W idx, W pid){	redisp_window(NULL);	return ER_OK;			/* 撅に ER_OK */}/* * [试礁]-[トレ〖へ剩继]/[トレ〖へ败瓢](鼎奶) */LOCAL	ERR	cmd_totray(W idx, W pid){	return (push_data(pid, (Bool)(idx == MIDX_TOTRAY2)));}/* * [试礁]-[猴近] */LOCAL	ERR	cmd_delete(W idx, W pid){	TC	buf;	b_ccut_txt(pid, 1, &buf, 1);	return ER_OK;			/* 撅に ER_OK */}/* * [ウィンドウ]-[...] */LOCAL	ERR	cmd_window(W idx, W pid){	b_wexe_dmn(idx);	return ER_OK;			/* 撅に ER_OK */}/* * [井湿]-[...] */LOCAL	ERR	cmd_tool(W idx, W pid){	b_gset_ptr(PS_BUSY, NULL, -1, -1);	/* 悸乖 */	b_oexe_apg(0, idx);	return ER_OK;			/* 撅に ER_OK */}/* -------------------------------------------------------------- 肩创借妄废 *//* * メニュ〖の介袋步/栏喇 */EXPORT	ERR	create_menu(VOID){	ERR	er;	er = ER_OK;	/* 簇息する弓拌恃眶の介袋步 */	mymid = -1;	/* menu の判峡 */	mymid = b_mcre_men(MENU_PARNUM, mitem, NULL);	printf("b_mcre_men : %d, %d\n", mymid, mymid >> 16);	if (mymid < ER_OK) {		er = mymid;	}	return er;}/* * メニュ〖の茄逮 */EXPORT	VOID	dest_menu(VOID){	if (mymid >= 0) {		b_mdel_men(mymid);	}	mymid = -1;	return;}/* * メニュ〖の悸乖 *	EV_MENU か、キ〖掐蜗废で (stat & ES_CMD) != 0 であること */EXPORT	ERR	exec_menu(W pid){	ERR	er;	W	l;	W	idx;			/* 联买戎规(悸戎规)		*/	er = ER_OK;	idx = 0;	/* 悸乖涟の肋年 */	set_indi(pid);	set_enable(pid);	set_window();	set_tool();	/* 悸乖涟に PD 妨觉を肋年 */	b_gset_ptr(PS_SELECT, NULL, -1, -1);	/* menu の悸乖 */	if (wevt.e.type == EV_MENU) {		idx = b_msel_men(mymid, wevt.s.pos);	}
	else if (wevt.e.type == EV_KEYDWN) 
	{		idx = b_mfnd_key(-mymid, wevt.e.data.key.code);	}	printf("idx : %x : %d, %d\n", idx, idx, idx >> 16);	if (idx > 0) {				if (MPIDX(idx) == MPIDX_WINDOW) {						er = cmd_window(idx, pid);		}
		else if (MPIDX(idx) == MPIDX_TOOL) {						er = cmd_tool(idx, pid);		}
		else {						for (l = 0; l < MENU_NUM; l++) {				if (mf_tbl[l].idx == idx) {					/* 滦炳する簇眶が斧つかった */					if (mf_tbl[l].fn != NULL) {						er = (mf_tbl[l].fn)(idx, pid);					}					break;				}
				else if ((mf_tbl[l].fn == NULL) &&					   (mf_tbl[l].idx < -1)) {					/* 姜眉 */					printf("not found execute func.\n");					break;				}			}		}	} else {		/* error か联买されなかった */		er = idx;	}	return er;}

⌨️ 快捷键说明

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