?? menu.c
字號(hào):
/* * 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, /* [山績(jī)] 廢 */ 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), /* [山績(jī)] */ MIDX_REDRAW = MIDX(MPIDX_VIEW, 1), /* -[浩山績(jī)] */ MIDX_EDIT = MIDX(MPIDX_EDIT, 0), /* [試礁] */ MIDX_TOTRAY1 = MIDX(MPIDX_EDIT, 1), /* -[トレ〖へ剩繼] */ MIDX_TOTRAY2 = MIDX(MPIDX_EDIT, 2), /* -[トレ〖へ?cái)∑癩 */ 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; /* 灤炳する悸戎規(guī) */} 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, 0x2345, 0x3d2a, 0x4e3b, TNULL };LOCAL TC item_1[] = { /* [山績(jī)] */ MC_STR, 0x493d, 0x3c28, MC_STR, 0x3a46, 0x493d, 0x3c28, TNULL };LOCAL TC item_2[] = { /* [試礁] */ MC_STR, 0x4a54, 0x3d38, MC_STR | MC_KEY1, 0x2343, 0x2548, 0x256c, 0x213c, 0x2458, 0x4a23, 0x3c4c, MC_STR | MC_KEY1, 0x2356, 0x2548, 0x256c, 0x213c, 0x2458, 0x305c, 0x4630, MC_STR, 0x3a6f, 0x3d7c, TNULL };#if 0 /* 柒推踏年盜とする */LOCAL TC item_3[] = { /* [ウィンドウ] */ MC_STR, 0x2526, 0x2523, 0x2573, 0x2549, 0x2526, TNULL };LOCAL TC item_4[] = { /* [井濕] */ MC_STR, 0x3e2e, 0x4a2a, 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 ; /* [試礁]-[トレ〖へ剩繼]/[トレ〖へ?cái)∑癩/[猴近] */ if (pid > 0) { /* 悸乖面 TB_PARTS の聯(lián)買覺輪を艱評(píng) */ 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 */}/* * [山績(jī)]-[浩山績(jī)] */LOCAL ERR cmd_redraw(W idx, W pid){ redisp_window(NULL); return ER_OK; /* 撅に ER_OK */}/* * [試礁]-[トレ〖へ剩繼]/[トレ〖へ?cái)∑癩(鼎奶) */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 */}/* -------------------------------------------------------------- 肩創(chuàng)借妄廢 *//* * メニュ〖の介袋步/欄喇 */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; /* 聯(lián)買戎規(guī)(悸戎規(guī)) */ 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 か聯(lián)買されなかった */ er = idx; } return er;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -