1: /* $Id: 1048615.html,v 1.1.1.1 2000/08/28 11:39:25 hidetosi Exp $ */ 2: #include <btron/btron.h> 3: #include <btron/hmi.h> 4: #include <btron/vobj.h> 5: #include <typedef.h> 6: #include <bstdlib.h> 7: #include "paperbox.h" 8: #include "view.h" 9: #include "doc.h" 10: #include "databox.h" 11: 12: W idMenu; 13: MENUITEM itmMNApplet,itmMNWnd; 14: 15: /* メニューの初期化 */ 16: BOOL MenuInit(W aidWnd) 17: { 18: idMenu=mopn_men(ID_MN); /* メニューの登録 */ 19: if(idMenu<0) 20: { 21: return FALSE; 22: } 23: 24: /* メニュー項目の取り出し */ 25: mget_itm(idMenu,ID_MN_APPLET,&itmMNApplet); 26: mget_itm(idMenu,ID_MN_WND,&itmMNWnd); 27: 28: /* 実行・小物・仮身操作・実身操作・ディスク操作のメニュー項目の設定 */ 29: oget_vmn(0,NULL,&(itmMNApplet.ptr),NULL, 30: NULL,NULL,NULL); 31: mset_itm(idMenu,ID_MN_APPLET,&itmMNApplet); 32: 33: /* ウインドウのメニュー項目の設定 */ 34: wget_dmn(&itmMNWnd.ptr); 35: mset_itm(idMenu,ID_MN_WND,&itmMNWnd); 36: 37: return TRUE; 38: } 39: 40: 41: void TrayMenu(W aidWnd,W awType,PNT aptPushed) 42: { 43: PNT ptLocalPoint; 44: W idMouseWnd; 45: 46: wfnd_wnd(&aptPushed,&ptLocalPoint,&idMouseWnd); 47: if(idMouseWnd!=aidWnd) /* メニューボタンを押した場所が 48: 他のウインドウの上だったとき */ 49: { 50: ptLocalPoint.x=0; 51: ptLocalPoint.y=0; 52: } 53: 54: switch(awType) 55: { 56: case ID_MN_EDIT_COPY: 57: /* トレイにコピー */ 58: if(GetSelectedVobj()!=NULL) 59: SendSelectedDataToTray(FALSE,ptLocalPoint,0); 60: break; 61: } 62: } 63: 64: /* メニューの結果に対する動作 */ 65: /* 戻り値: 終了が選ばれた=FALSE, その他=TRUE */ 66: BOOL ExecuteMenu(W awSelectedMenu,W aidWnd,PNT aptPushed) 67: { 68: DrawSelectFrame(aidWnd,0,0,0); 69: 70: if(awSelectedMenu<=0) 71: { 72: MakeSelectFrame(); 73: return TRUE; 74: } 75: switch(awSelectedMenu >>8) 76: { 77: case ID_MN_END: 78: return FALSE; 79: case ID_MN_VIEW: 80: switch(awSelectedMenu & 0x00ff) 81: { 82: case ID_MN_VIEW_FULLWND: 83: /* 全面表示切り替え */ 84: SwitchFullWindow(aidWnd); 85: break; 86: case ID_MN_VIEW_REPAINT: 87: /* 再描画 */ 88: wreq_dsp(aidWnd); 89: break; 90: } 91: break; 92: case ID_MN_EDIT: 93: switch(awSelectedMenu & 0x00ff) 94: { 95: case ID_MN_EDIT_COPY: 96: TrayMenu(aidWnd,awSelectedMenu & 0x00ff,aptPushed); 97: break; 98: } 99: break; 100: 101: case ID_MN_WND: 102: /* ウインドウの切り替え */ 103: wexe_dmn(awSelectedMenu); 104: break; 105: case ID_MN_APPLET: 106: /* 小物の起動 */ 107: oexe_apg(0,awSelectedMenu); 108: break; 109: } 110: MakeSelectFrame(); 111: return TRUE; 112: } 113: 114: 115: /* メニューの表示 */ 116: /* 戻り値: 終了が選ばれた=FALSE, その他=TRUE */ 117: BOOL OpenMenu(PNT aptPoint,W aidWnd) 118: { 119: W SelectedMenu; 120: 121: if(GetSelectedVobj()!=NULL && IsFusen(GetSelectedVobj())) 122: { 123: mchg_atr(idMenu,ID_MN_EDIT<<8|ID_MN_EDIT_COPY,M_ACT); 124: }else{ 125: mchg_atr(idMenu,ID_MN_EDIT<<8|ID_MN_EDIT_COPY,M_INACT); 126: } 127: 128: gset_ptr(PS_SELECT,NULL,-1,-1); 129: SelectedMenu=msel_men(idMenu,aptPoint); /* メニューの動作 */ 130: 131: return ExecuteMenu(SelectedMenu,aidWnd,aptPoint); 132: } 133: 134: 135: /* 命令キーを押しながら他のキーを押した時の処理 */ 136: BOOL MenuKey(W aKeyCode,W aidWnd,PNT aptPushed) 137: { 138: W SelectedMenu; 139: 140: /* メニューのマクロの処理 */ 141: SelectedMenu=mfnd_key(idMenu,aKeyCode); 142: if(SelectedMenu>=0) 143: return ExecuteMenu(SelectedMenu,aidWnd,aptPushed); 144: else 145: return FALSE; 146: } 147: 148: /* 全画面表示のインジケータの変更 */ 149: void SwitchFullWindowIndicator(void) 150: { 151: W ItemNum; 152: 153: ItemNum=ID_MN_VIEW<<8 | ID_MN_VIEW_FULLWND; 154: if(mchg_atr(idMenu,ItemNum,M_STAT) & 0x0001) 155: mchg_atr(idMenu,ItemNum,M_NOSEL); 156: else 157: mchg_atr(idMenu,ItemNum,M_SEL); 158: } 159: 160: BOOL GetFullWindowIndicator(void) 161: { 162: W ItemNum; 163: 164: ItemNum=ID_MN_VIEW<<8 | ID_MN_VIEW_FULLWND; 165: if(mchg_atr(idMenu,ItemNum,M_STAT) & M_SEL) 166: return TRUE; 167: else 168: return FALSE; 169: } 170: