1: /* $Id: 1048620.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: 11: 12: /* マウスのボタンを押したときの処理 */ 13: BOOL MouseButtonDown(W aidWnd,WEVENT *aevWnd) 14: { 15: if(aidWnd!=aevWnd->s.wid) 16: return TRUE; 17: switch(aevWnd->s.cmd) 18: { 19: case W_LTHD: /* ハンドル */ 20: case W_RTHD: 21: case W_LBHD: 22: case W_RBHD: 23: switch(wchk_dck(aevWnd->s.time)) 24: { 25: case W_DCLICK: 26: SwitchFullWindow(aidWnd); /* 全面表示切り替え */ 27: SetBarValue(aidWnd); 28: break; 29: 30: case W_PRESS: 31: case W_QPRESS: 32: /* ドラッグ変形する */ 33: if(wrsz_drg(aevWnd,NULL,NULL)==1) 34: DrawView(aevWnd->s.wid); 35: if(GetFullWindowIndicator()==TRUE) 36: SwitchFullWindowIndicator(); 37: SetBarValue(aidWnd); 38: break; 39: } 40: break; 41: 42: case W_PICT: /* ピクトグラム */ 43: switch (wchk_dck(aevWnd->s.time)) 44: { 45: case W_DCLICK: /* ダブルクリックの時 */ 46: return FALSE; /* 終了 */ 47: case W_PRESS: 48: break; /* 移動 */ 49: default: 50: return TRUE; 51: } 52: 53: case W_FRAM: /* 枠 */ 54: case W_TITL: /* タイトルバー */ 55: /* ドラッグ移動する */ 56: if(wmov_drg(aevWnd, NULL)==1) 57: DrawView(aevWnd->s.wid); 58: if(GetFullWindowIndicator()==TRUE) 59: SwitchFullWindowIndicator(); 60: break; 61: 62: case W_RBAR: /* 右スクロールバー */ 63: ActScrollBar(RIGHTBAR,aevWnd); 64: break; 65: 66: case W_BBAR: /* 下スクロールバー */ 67: ActScrollBar(BOTTOMBAR,aevWnd); 68: break; 69: 70: case W_WORK: 71: PushWorkArea(aevWnd); 72: break; 73: } 74: return TRUE; 75: } 76: 77: 78: BOOL EventExec(WEVENT aevWnd,int aidWnd) 79: { 80: switch (aevWnd.s.type) 81: { 82: case EV_NULL: 83: NullEvent(aevWnd,aidWnd); 84: break; 85: case EV_REQUEST: 86: switch(aevWnd.g.cmd) 87: { 88: case W_REDISP:/* 再表示要求 */ 89: DrawView(aidWnd); 90: break; 91: case W_PASTE: /* 貼込み要求*/ 92: wrsp_evt(&aevWnd,1); /* 拒否 */ 93: break; 94: case W_DELETE: /* ウインドウのクローズ */ 95: case W_FINISH: /* 処理終了 */ 96: wrsp_evt(&aevWnd,0); 97: return FALSE; 98: case W_VOBJREQ: /* 仮身要求イベント */ 99: switch(aevWnd.g.data[2]) 100: { 101: case 0: /* 名称の変更 */ 102: case 1: /* 処理中状態になった */ 103: case 2: /* 処理中状態が解除された */ 104: case 3: /* 虚身状態になった */ 105: case 4: /* 虚身状態が解除された */ 106: /* b_printf("request=%d ID=%d\n",aevWnd.g.data[2],aevWnd.g.data[3]); */ 107: { /* なぜか身に覚えのない仮身ID(ID=1)の要求が来るので 108: その対策をしてあります。もしかして 1B のバグ? */ 109: DOCITERATOR diChange; 110: if((diChange=GetIterator(aevWnd.g.data[3]))!=NULL) 111: DrawOneRect(aidWnd,GetRect(diChange)); 112: /* 仮身の再描画 */ 113: } 114: break; 115: case 5: /* 虚身ウインドウになった */ 116: case 6: /* 虚身ウインドウが解除になった */ 117: wreq_dsp(aidWnd); /* 再描画 */ 118: break; 119: case 15: /* 仮身の変更通知 */ 120: break; 121: case 16: /* 仮身の挿入要求 */ 122: case 17: /* 仮身の挿入要求 */ 123: break; 124: case 128: /* 一時ファイルへの格納要求 */ 125: break; 126: } 127: break; 128: } 129: break; 130: case EV_RSWITCH: 131: DrawView(aidWnd); 132: case EV_SWITCH: 133: case EV_BUTDWN: /* マウスのボタンが押されたとき */ 134: return MouseButtonDown(aidWnd,&aevWnd); 135: case EV_MENU: 136: return OpenMenu(aevWnd.s.pos,aidWnd); 137: case EV_AUTKEY: 138: case EV_KEYDWN: /* キーが押されたとき */ 139: return KeyDown(aevWnd,aidWnd); 140: case EV_INACT: 141: DrawSelectFrame(aidWnd,0,0,0); /* 選択枠の消去 */ 142: break; 143: case EV_DEVICE: 144: oprc_dev((EVENT*)&aevWnd,NULL,0); 145: break; 146: case EV_MSG: 147: { /* メッセージは捨てる */ 148: MESSAGE aMsg; 149: rcv_msg(0x7fffffff,&aMsg,sizeof(aMsg),NOWAIT|CLR); 150: break; 151: } 152: } 153: return TRUE; 154: } 155: