亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? framewin_setresizeable.c

?? C語言和ucGUI實現的電子地圖功能,地圖的移動(方向鍵),縮放,查找
?? C
?? 第 1 頁 / 共 2 頁
字號:
  }
}
#endif

/*********************************************************************
*
*       _SetCapture
*/
static void _SetCapture(FRAMEWIN_Handle hWin, int x, int y, int Mode) {
  if ((_CaptureFlags & FRAMEWIN_REPOS_X) == 0) {
    _CaptureX = x;
  }
  if ((_CaptureFlags & FRAMEWIN_REPOS_Y) == 0) {
    _CaptureY = y;
  }
  if (Mode) {
    if (WM_HasCaptured(hWin) == 0) {
      WM_SetCapture(hWin, 0);
    }
  #if GUI_SUPPORT_CURSOR
    _SetResizeCursor(Mode);
  #endif
    if (Mode & FRAMEWIN_MOUSEOVER) {
      Mode = 0;
    }
    _CaptureFlags = (Mode | FRAMEWIN_MOUSEOVER);
  }
}

/*********************************************************************
*
*       _ChangeWindowPosSize
*/
static void _ChangeWindowPosSize(FRAMEWIN_Handle hWin, int* px, int* py) {
  int dx = 0, dy = 0;
  GUI_RECT Rect;
  WM_GetClientRectEx(hWin, &Rect);
  /* Calculate new size of window */
  if (_CaptureFlags & FRAMEWIN_RESIZE_X) {
    dx = (_CaptureFlags & FRAMEWIN_REPOS_X) ? (_CaptureX - *px) : (*px - _CaptureX);
  }
  if (_CaptureFlags & FRAMEWIN_RESIZE_Y) {
    dy = (_CaptureFlags & FRAMEWIN_REPOS_Y) ? (_CaptureY - *py) : (*py - _CaptureY);
  }
  /* Check the minimal size of window */
  if ((Rect.x1 + dx + 1) < FRAMEWIN_MINSIZE_X) {
    dx = FRAMEWIN_MINSIZE_X - Rect.x1 - 1;
    *px = _CaptureX + dx;
  }
  if ((Rect.y1 + dy + 1) < FRAMEWIN_MINSIZE_Y) {
    dy = FRAMEWIN_MINSIZE_Y - Rect.y1 - 1;
    *py = _CaptureY + dy;
  }
  /* Set new window position */
  if (_CaptureFlags & FRAMEWIN_REPOS_X) {
    WM_MoveWindow(hWin, -dx, 0);
  }
  if (_CaptureFlags & FRAMEWIN_REPOS_Y) {
    WM_MoveWindow(hWin, 0, -dy);
  }
  /* Set new window size */
  WM_ResizeWindow(hWin, dx, dy);
}

/*********************************************************************
*
*       _CheckBorderX
*/
static int _CheckBorderX(int x, int x1, int Border) {
  int Mode = 0;
  if (x > (x1 - Border)) {
    Mode = FRAMEWIN_RESIZE_X;
  } else if (x < (Border)) {
    Mode = FRAMEWIN_RESIZE_X | FRAMEWIN_REPOS_X;
  }
  return Mode;
}

/*********************************************************************
*
*       _CheckBorderY
*/
static int _CheckBorderY(int y, int y1, int Border) {
  int Mode = 0;
  if (y > (y1 - Border)) {
    Mode = FRAMEWIN_RESIZE_Y;
  } else if (y < (Border)) {
    Mode = FRAMEWIN_RESIZE_Y | FRAMEWIN_REPOS_Y;
  }
  return Mode;
}

/*********************************************************************
*
*       _CheckReactBorder
*/
static int _CheckReactBorder(FRAMEWIN_Handle hWin, int x, int y) {
  int Mode = 0;
  GUI_RECT r;
  WM_GetClientRectEx(hWin, &r);
  if ((x >= 0) && (y >= 0) && (x <= r.x1) && (y <= r.y1)) {
    Mode |= _CheckBorderX(x, r.x1, FRAMEWIN_REACT_BORDER);
    if (Mode) {
      Mode |= _CheckBorderY(y, r.y1, 4 * FRAMEWIN_REACT_BORDER);
    } else {
      Mode |= _CheckBorderY(y, r.y1, FRAMEWIN_REACT_BORDER);
      if (Mode) {
        Mode |= _CheckBorderX(x, r.x1, 4 * FRAMEWIN_REACT_BORDER);
      }
    }
  }
  return Mode;
}

/*********************************************************************
*
*       _OnTouch
*/
static int _OnTouch(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
  const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p;
  if (pState) {  /* Something happened in our area (pressed or released) */
    int x, y, Mode;
    x    = pState->x;
    y    = pState->y;
    Mode = _CheckReactBorder(hWin, x, y);
    if (pState->Pressed == 1) {
      if (_CaptureFlags & FRAMEWIN_RESIZE) {
        _ChangeWindowPosSize(hWin, &x, &y);
        _SetCapture(hWin, x, y, 0);
        return 1;
      } else if (Mode) {
        WM_SetFocus(hWin);
        WM_BringToTop(hWin);
        _SetCapture(hWin, x, y, Mode);
        return 1;
      }
      #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
      else if (_CaptureFlags) {
        WM_ReleaseCapture();
        return 1;
      }
      #endif
    } else if (WM_HasCaptured(hWin)) {
      _CaptureFlags &= ~(FRAMEWIN_RESIZE);
      #if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
        if (!Mode)
      #endif
      {
        WM_ReleaseCapture();
      }
      return 1;
    }
  }
  return 0;
}

/*******************************************************************
*
*       _ForwardMouseOverMsg
*/
#if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
static int _ForwardMouseOverMsg(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
  GUI_PID_STATE* pState = (GUI_PID_STATE *)pMsg->Data.p;
  WM_HWIN hBelow;
  pState->x += WM_GetWindowOrgX(hWin);
  pState->y += WM_GetWindowOrgY(hWin);
  hBelow = WM_Screen2hWin(pState->x, pState->y);
  if (hBelow && (hBelow != hWin)) {
    pState->x -= WM_GetWindowOrgX(hBelow);
    pState->y -= WM_GetWindowOrgY(hBelow);
    WM__SendMessage(hBelow, pMsg);
    return 1;
  }
  return 0;
}
#endif

/*********************************************************************
*
*       _OnMouseOver
*/
#if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
static int _OnMouseOver(FRAMEWIN_Handle hWin, WM_MESSAGE* pMsg) {
  const GUI_PID_STATE* pState = (const GUI_PID_STATE *)pMsg->Data.p;
  if (pState) {
    int x, y, Mode;
    x    = pState->x;
    y    = pState->y;
    Mode = _CheckReactBorder(hWin, x, y);
    if (Mode) {
      if (_ForwardMouseOverMsg(hWin, pMsg) == 0) {
        _SetCapture(hWin, x, y, Mode | FRAMEWIN_MOUSEOVER);
      }
      return 1;
    } else if (WM_HasCaptured(hWin)) {
      if ((_CaptureFlags & FRAMEWIN_RESIZE) == 0) {
        WM_ReleaseCapture();
        _ForwardMouseOverMsg(hWin, pMsg);
      }
      return 1;
    }
  }
  return 0;
}
#endif

/*********************************************************************
*
*       static code, hook function
*
**********************************************************************
*/
/*********************************************************************
*
*       _HOOKFUNC_Resizeable
*/
static int _HOOKFUNC_Resizeable(WM_MESSAGE* pMsg) {
  WM_HWIN hWin = pMsg->hWin;
  if (WM_HasCaptured(hWin) && (_CaptureFlags == 0)) {
    return 0;
  }
  if (FRAMEWIN_IsMinimized(hWin) || FRAMEWIN_IsMaximized(hWin)) {
    return 0;
  }
  switch(pMsg->MsgId) {
  case WM_TOUCH:
    return _OnTouch(hWin, pMsg);
#if (GUI_SUPPORT_MOUSE & GUI_SUPPORT_CURSOR)
  case WM_MOUSEOVER:
    return _OnMouseOver(hWin, pMsg);
#endif
  case WM_CAPTURE_RELEASED:
  #if GUI_SUPPORT_CURSOR
    _SetResizeCursor(0);
  #endif
    _CaptureFlags = 0;
    return 1;
  }
  return 0;
}

/*********************************************************************
*
*        Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       FRAMEWIN_SetResizeable
*/
void FRAMEWIN_SetResizeable(FRAMEWIN_Handle hObj, int State) {
  if (hObj) {
    FRAMEWIN_Obj* pObj;
    WM_LOCK();
    pObj = FRAMEWIN_H2P(hObj);
    if (pObj) {
      if (State) {
        GUI_HOOK_Add(&pObj->pFirstHook, &_HOOK_Resizeable, &_HOOKFUNC_Resizeable);
      } else {
        GUI_HOOK_Remove(&pObj->pFirstHook, &_HOOK_Resizeable);
      }
    }
    WM_UNLOCK();
  }
}

#else
  void FRAMEWIN_SetResizeable_c(void) {} /* avoid empty object files */
#endif /* GUI_WINSUPPORT */

/*************************** End of file ****************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费一二三区| 国产精品一区二区三区四区 | 欧美视频一区二区三区四区| 日本欧美加勒比视频| 亚洲精品免费播放| 国产精品久久久久久久久果冻传媒| 7777精品伊人久久久大香线蕉最新版| 99热99精品| www.99精品| 成人午夜短视频| 国产精品一区二区久久精品爱涩| 伦理电影国产精品| 亚洲综合区在线| 日韩美女久久久| 国产精品短视频| 国产精品色噜噜| 国产精品女主播av| 欧美国产97人人爽人人喊| 国产性做久久久久久| 久久久91精品国产一区二区精品| av在线综合网| 亚洲一区二区三区爽爽爽爽爽| 亚洲一区在线视频| 亚洲成av人片在线| 男人的天堂久久精品| 精久久久久久久久久久| 国产成人一级电影| 色综合天天综合狠狠| 欧美日韩不卡一区| 欧美一级高清片在线观看| 精品理论电影在线| 国产精品久久久久aaaa| 亚洲主播在线播放| 韩国欧美国产1区| 99re这里都是精品| 欧美亚洲国产bt| 欧美一区二区黄色| 中文字幕精品综合| 图片区小说区区亚洲影院| 国产一区在线观看麻豆| fc2成人免费人成在线观看播放| 色综合久久九月婷婷色综合| 在线观看一区二区视频| 欧美大肚乱孕交hd孕妇| 亚洲色图一区二区三区| 日韩av不卡一区二区| 国产a精品视频| 欧美日韩国产影片| 中文乱码免费一区二区| 午夜av区久久| 成人午夜av在线| 欧美精品一卡两卡| 天堂成人国产精品一区| 韩国欧美一区二区| 亚洲成人一区在线| 麻豆久久久久久久| 国产一区二区福利| 久久人人爽人人爽| 欧美一级爆毛片| 日韩理论片网站| 奇米一区二区三区av| av成人免费在线| 日韩欧美中文字幕精品| 亚洲日本免费电影| 国内外成人在线| 欧美日韩国产一区二区三区地区| 中文字幕不卡一区| 蜜桃在线一区二区三区| 色综合久久88色综合天天| 久久久综合视频| 日韩中文字幕91| 色老汉av一区二区三区| 久久久久久久久免费| 图片区小说区区亚洲影院| a亚洲天堂av| 精品国产91久久久久久久妲己 | 久久综合色播五月| 一区二区视频在线看| 国产精品99久久久久久似苏梦涵 | 91丨国产丨九色丨pron| 日韩精品影音先锋| 午夜影院在线观看欧美| 91色九色蝌蚪| 中文乱码免费一区二区| 国产一区三区三区| 欧美电影免费观看高清完整版在线观看 | 精品国产乱码久久| 午夜精品福利一区二区蜜股av | 国产精品久久久久久久久晋中 | 欧美日韩一区视频| 一区二区三区不卡在线观看 | 欧美精品电影在线播放| 亚洲精品视频免费看| 99免费精品在线观看| 国产精品久久午夜夜伦鲁鲁| 激情综合亚洲精品| 精品国产百合女同互慰| 久久99国产乱子伦精品免费| 日韩一区二区免费电影| 国产一区二区在线视频| 日韩欧美一区电影| 美女www一区二区| 69堂国产成人免费视频| 日本成人在线电影网| 欧美群妇大交群的观看方式| 亚洲成人在线免费| 91麻豆精品国产91久久久久久久久| 亚洲线精品一区二区三区| 日日摸夜夜添夜夜添国产精品| 99国内精品久久| 国产精品电影一区二区| 99riav一区二区三区| 亚洲激情校园春色| 欧美在线啊v一区| 亚洲v中文字幕| 9191成人精品久久| 麻豆精品在线播放| 久久久亚洲高清| 丁香另类激情小说| 亚洲欧美乱综合| 欧美在线免费观看视频| 婷婷国产在线综合| 欧美一卡二卡三卡| 激情图片小说一区| 国产丝袜美腿一区二区三区| 91在线免费看| 亚洲123区在线观看| 欧美电影免费观看完整版| 国产一区二区三区免费看| 中文字幕va一区二区三区| 99久久国产综合精品麻豆| 夜夜嗨av一区二区三区中文字幕| 欧美久久久久久久久| 国模冰冰炮一区二区| 国产精品剧情在线亚洲| 色噜噜久久综合| 免费一级欧美片在线观看| 国产午夜精品一区二区三区视频 | 亚洲一区二区免费视频| 欧美三日本三级三级在线播放| 蜜桃在线一区二区三区| 国产欧美日韩亚州综合| 91黄视频在线观看| 日本aⅴ精品一区二区三区| 久久嫩草精品久久久久| 91在线观看地址| 天堂影院一区二区| 久久久777精品电影网影网| 一本大道久久精品懂色aⅴ| 久久精品国产久精国产| 亚洲色图欧美偷拍| 日韩一级在线观看| 972aa.com艺术欧美| 日本欧美久久久久免费播放网| 国产精品卡一卡二| 日韩欧美成人激情| 色综合激情五月| 国产曰批免费观看久久久| 亚洲精品国产成人久久av盗摄| 欧美mv日韩mv| 欧美在线看片a免费观看| 国产精品18久久久| 婷婷激情综合网| 亚洲欧美偷拍三级| 久久久久久久网| 91精品国产91久久久久久一区二区| 国产精品77777竹菊影视小说| 亚洲一区二区高清| 中文字幕在线观看不卡视频| 日韩一区二区在线观看视频| 色婷婷精品大在线视频| 国产精品99久久久久久久vr | 成人av电影免费观看| 蜜桃视频免费观看一区| 亚洲综合视频在线观看| 国产精品久久久久久久久久免费看 | 日韩高清在线观看| 最好看的中文字幕久久| 久久久久国产精品免费免费搜索| 欧美高清视频www夜色资源网| 91首页免费视频| 国产麻豆欧美日韩一区| 日本免费在线视频不卡一不卡二| 亚洲精品国产无天堂网2021 | 日本va欧美va精品发布| 亚洲乱码中文字幕综合| 中文字幕在线观看不卡视频| 国产情人综合久久777777| 欧美成人一区二区三区片免费| 欧美日韩国产综合一区二区| 色婷婷综合在线| 91小视频免费观看| 丁香激情综合五月| 国产精品99久久不卡二区| 麻豆精品精品国产自在97香蕉 | 日韩午夜在线观看视频| 欧美喷潮久久久xxxxx| 欧美日韩精品二区第二页| 欧美性xxxxxx少妇| 欧美视频一区二区三区在线观看|