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: