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

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

?? scrollbar.c

?? C語言和ucGUI實現的電子地圖功能,地圖的移動(方向鍵),縮放,查找
?? C
?? 第 1 頁 / 共 2 頁
字號:
        Sel -= pObj->PageSize;
      } else if (x <= Pos.x1_Thumb) {      /* Thumb area */
        if (Pos.xSizeMoveable > 0) {
          x = x - Pos.ThumbSize/2 - Pos.x1_LeftArrow-1;
          Sel = GUI__DivideRound(Range * x, Pos.xSizeMoveable);
        }
      } else if (x < Pos.x0_RightArrow) {  /* right area (page right) */
        Sel += pObj->PageSize;
      } else  if (x <= Pos.x1_RightArrow) {
        Sel++;
      }
      /* WM_SetFocus(hObj); */
      WM_SetCapture(hObj, 1);
      SCROLLBAR_SetValue(hObj, Sel);
      if ((pObj->Widget.State & SCROLLBAR_STATE_PRESSED) == 0){   
        _ScrollbarPressed(hObj, pObj);
      }
    } else {
      /* React only if button was pressed before ... avoid problems with moving / hiding windows above (such as dropdown) */
      if (pObj->Widget.State & SCROLLBAR_STATE_PRESSED) {   
        _ScrollbarReleased(hObj, pObj);
      }
    }
  }
}

/*********************************************************************
*
*       _OnKey
*/
static void  _OnKey(SCROLLBAR_Handle hObj, WM_MESSAGE*pMsg) {
  const WM_KEY_INFO* pKeyInfo;
  int Key;
  pKeyInfo = (const WM_KEY_INFO*)(pMsg->Data.p);
  Key = pKeyInfo->Key;
  if (pKeyInfo->PressedCnt > 0) {
    switch (Key) {
      case GUI_KEY_RIGHT:
      case GUI_KEY_DOWN:
        SCROLLBAR_Inc(hObj);
        break;                    /* Send to parent by not doing anything */
      case GUI_KEY_LEFT:
      case GUI_KEY_UP:
        SCROLLBAR_Dec(hObj);
        break;                    /* Send to parent by not doing anything */
      default:
        return;
    }
  }
}

/*********************************************************************
*
*       _OnSetScrollState 
*/
static void _OnSetScrollState(SCROLLBAR_Handle hObj, SCROLLBAR_Obj* pObj, const WM_SCROLL_STATE* pState) {
  if (  (pState->NumItems != pObj->NumItems)
      || (pObj->PageSize   != pState->PageSize)
      || (pObj->v          != pState->v))
  {
    pObj->NumItems = pState->NumItems;
    pObj->PageSize = pState->PageSize;
    pObj->v        = pState->v;
    WM_InvalidateWindow(hObj);
  }
}

/*********************************************************************
*
*       SCROLLBAR__InvalidatePartner
*/
void SCROLLBAR__InvalidatePartner(SCROLLBAR_Handle hObj) {     /* Invalidate the partner, since it is also affected */
  WM_InvalidateWindow(WM_GetScrollPartner(hObj));
  WM_SendMessageNoPara(WM_GetParent(hObj), WM_NOTIFY_CLIENTCHANGE);   /* Client area may have changed */
}

/*********************************************************************
*
*       _SCROLLBAR_Callback
*/
static void _SCROLLBAR_Callback (WM_MESSAGE *pMsg) {
  SCROLLBAR_Handle hObj;
  SCROLLBAR_Obj* pObj;
  hObj = pMsg->hWin;
  pObj = SCROLLBAR_H2P(hObj);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_DELETE:
    SCROLLBAR__InvalidatePartner(hObj);
    break;
  case WM_PAINT:
    GUI_DEBUG_LOG("SCROLLBAR: _Callback(WM_PAINT)\n");
    _Paint(pObj);
    return;
  case WM_TOUCH:
    _OnTouch(hObj, pObj, pMsg);
    break;
  case WM_KEY:
    _OnKey(hObj, pMsg);
    break;
  case WM_SET_SCROLL_STATE:
    _OnSetScrollState(hObj, pObj, (const WM_SCROLL_STATE*)pMsg->Data.p);
    break;
  case WM_GET_SCROLL_STATE:
    ((WM_SCROLL_STATE*)pMsg->Data.p)->NumItems = pObj->NumItems;
    ((WM_SCROLL_STATE*)pMsg->Data.p)->PageSize = pObj->PageSize;
    ((WM_SCROLL_STATE*)pMsg->Data.p)->v        = pObj->v;
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/

/* Note: the parameters to a create function may vary.
         Some widgets may have multiple create functions */

/*********************************************************************
*
*       SCROLLBAR_CreateEx
*/
SCROLLBAR_Handle SCROLLBAR_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent,
                                    int WinFlags, int ExFlags, int Id)
{
  SCROLLBAR_Handle hObj;
  WM_LOCK();
  /* Set defaults if necessary */
  if ((xsize == 0) && (ysize == 0)) {
    GUI_RECT Rect;
    WM_GetInsideRectEx(hParent, &Rect);
    if (ExFlags & SCROLLBAR_CF_VERTICAL) {
      xsize = SCROLLBAR__DefaultWidth;
      x0    = Rect.x1 + 1 - xsize;
      y0    = Rect.y0;
      ysize = Rect.y1 - Rect.y0 + 1;
    } else {
      ysize = SCROLLBAR__DefaultWidth;
      y0    = Rect.y1 + 1 - ysize;
      x0    = Rect.x0;
      xsize = Rect.x1 - Rect.x0 + 1;
    }
  }
  /* Create the window */
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _SCROLLBAR_Callback,
                                sizeof(SCROLLBAR_Obj) - sizeof(WM_Obj));
  if (hObj) {
    SCROLLBAR_Obj* pObj = SCROLLBAR_H2P(hObj);
    U16 InitState;
    /* Handle SpecialFlags */
    InitState = 0;
    if (ExFlags & SCROLLBAR_CF_VERTICAL) {
      InitState |= WIDGET_CF_VERTICAL;
    }
    if (ExFlags & SCROLLBAR_CF_FOCUSSABLE) {
      InitState |= WIDGET_STATE_FOCUSSABLE;
    }
    if ((Id != GUI_ID_HSCROLL) && (Id != GUI_ID_VSCROLL)) {
      InitState |= WIDGET_STATE_FOCUSSABLE;
    }
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, Id, InitState);
    /* init member variables */
    SCROLLBAR_INIT_ID(pObj);
    pObj->aBkColor[0]   = SCROLLBAR__aDefaultBkColor[0];
    pObj->aBkColor[1]   = SCROLLBAR__aDefaultBkColor[1];
    pObj->aColor[0]     = SCROLLBAR__aDefaultColor[0];
    pObj->aColor[1]     = SCROLLBAR__aDefaultColor[1];
    pObj->NumItems      = 100;
    pObj->PageSize      =  10;
    pObj->v             =   0;
    SCROLLBAR__InvalidatePartner(hObj);
  } else {
    GUI_DEBUG_ERROROUT_IF(hObj==0, "SCROLLBAR_Create failed")
  }
  WM_UNLOCK();
  return hObj;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/
/*********************************************************************
*
*       SCROLLBAR_Dec
*/
void SCROLLBAR_Dec(SCROLLBAR_Handle hObj) {
  SCROLLBAR_AddValue(hObj, -1);
}

/*********************************************************************
*
*       SCROLLBAR_Inc
*/
void SCROLLBAR_Inc(SCROLLBAR_Handle hObj) {
  SCROLLBAR_AddValue(hObj,  1);
}

/*********************************************************************
*
*       SCROLLBAR_AddValue
*/
void SCROLLBAR_AddValue(SCROLLBAR_Handle hObj, int Add) {
  SCROLLBAR_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = SCROLLBAR_H2P(hObj);
    SCROLLBAR_SetValue(hObj, pObj->v + Add);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       SCROLLBAR_SetValue
*/
void SCROLLBAR_SetValue(SCROLLBAR_Handle hObj, int v) {
  SCROLLBAR_Obj* pObj;
  int Max;
  if (hObj) {
    WM_LOCK();
    pObj = SCROLLBAR_H2P(hObj);
    Max = pObj->NumItems - pObj->PageSize;
    if (Max < 0)
      Max =0;
    /* Put in min/max range */
    if (v < 0) {
      v = 0;
    }
    if (v > Max) {
      v = Max;
    }
    if (pObj->v != v) {
      pObj->v = v;
      WM_InvalidateWindow(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       SCROLLBAR_SetNumItems
*/
void SCROLLBAR_SetNumItems(SCROLLBAR_Handle hObj, int NumItems) {
  SCROLLBAR_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = SCROLLBAR_H2P(hObj);
    if (pObj->NumItems != NumItems) {
      pObj->NumItems = NumItems;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       SCROLLBAR_SetPageSize
*/
void SCROLLBAR_SetPageSize(SCROLLBAR_Handle hObj, int PageSize) {
  SCROLLBAR_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = SCROLLBAR_H2P(hObj);
    if (pObj->PageSize != PageSize) {
      pObj->PageSize = PageSize;
      WM_InvalidateWindow(hObj);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       SCROLLBAR_SetState
*/
void  SCROLLBAR_SetState   (SCROLLBAR_Handle hObj, const WM_SCROLL_STATE* pState) {
  if (hObj) {
    SCROLLBAR_SetPageSize(hObj, pState->PageSize);
    SCROLLBAR_SetNumItems(hObj, pState->NumItems);
    SCROLLBAR_SetValue   (hObj, pState->v);
  }
}


#else /* avoid empty object files */

void SCROLLBAR_C(void);
void SCROLLBAR_C(void){}

#endif  /* #if GUI_WINSUPPORT */



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女视频在线观看| 精品国精品自拍自在线| 亚洲乱码国产乱码精品精小说 | 欧美疯狂性受xxxxx喷水图片| 亚洲国产精品一区二区久久| 欧美日韩一区在线| 日本成人在线网站| 久久众筹精品私拍模特| 成人丝袜高跟foot| 亚洲免费毛片网站| 欧美日韩1234| 国产成人午夜高潮毛片| 综合激情网...| 91精品麻豆日日躁夜夜躁| 麻豆精品视频在线观看| 国产精品网站一区| 欧美影视一区在线| 国产一区二区三区四区在线观看| 欧美韩国日本综合| 欧美狂野另类xxxxoooo| 国内精品写真在线观看| 一区二区中文字幕在线| 欧美一区二区免费观在线| 国产高清视频一区| 亚洲国产一区二区三区青草影视| 日韩欧美www| 色综合色综合色综合| 久久国产精品一区二区| 17c精品麻豆一区二区免费| 日韩欧美中文字幕精品| 99精品偷自拍| 美女精品一区二区| 亚洲免费av观看| 精品国产91洋老外米糕| 欧美在线一区二区| 国产乱色国产精品免费视频| 亚洲一区二区三区免费视频| 2024国产精品| 欧美日韩国产综合一区二区三区| 成人黄色在线网站| 久久精品国产久精国产爱| 亚洲精品成人a在线观看| 精品国产亚洲一区二区三区在线观看 | 2024国产精品视频| 91福利小视频| 国产成人在线观看| 日本欧美加勒比视频| 亚洲视频中文字幕| 日本一区二区三区四区在线视频 | 色哟哟在线观看一区二区三区| 六月丁香婷婷色狠狠久久| 亚洲一区二区三区国产| 国产精品蜜臀在线观看| 亚洲精品一区二区三区蜜桃下载| 欧美欧美欧美欧美| 色婷婷激情综合| 成人丝袜视频网| 国产91丝袜在线播放0| 免播放器亚洲一区| 日本大胆欧美人术艺术动态| 亚洲成av人**亚洲成av**| 亚洲综合视频在线观看| 亚洲人成影院在线观看| 国产精品国产三级国产普通话蜜臀| 久久综合久久综合久久综合| 欧美一级片在线| 4438成人网| 欧美一级黄色片| 91精品国产综合久久福利| 欧美日韩免费一区二区三区视频| 91视频在线看| 91玉足脚交白嫩脚丫在线播放| 大桥未久av一区二区三区中文| 国产精品一区二区黑丝| 成人激情免费视频| av在线不卡网| 在线看国产一区| 欧美日韩另类一区| 欧美日韩精品一区二区在线播放| 欧美探花视频资源| 在线观看日韩av先锋影音电影院| 91丨porny丨首页| 在线观看视频一区| 欧美亚洲综合网| 欧美一区二区在线视频| 欧美精品久久久久久久久老牛影院| 欧美疯狂做受xxxx富婆| 日韩美女一区二区三区四区| 26uuu欧美日本| 国产精品色在线| 国产精品免费视频一区| 一级日本不卡的影视| 香蕉影视欧美成人| 蜜桃视频在线观看一区二区| 国模娜娜一区二区三区| 波多野洁衣一区| 在线亚洲一区二区| 亚洲精品一区二区精华| 久久精品无码一区二区三区| 国产日韩精品一区二区三区| 日韩毛片高清在线播放| 亚洲v日本v欧美v久久精品| 久久 天天综合| 成人av电影免费在线播放| 欧亚一区二区三区| 欧美一区二区精品| 国产欧美一二三区| 一区二区三区精密机械公司| 日本美女一区二区三区视频| 国产aⅴ精品一区二区三区色成熟| 99精品一区二区三区| 制服视频三区第一页精品| 久久精品亚洲一区二区三区浴池 | 日本少妇一区二区| 国产91精品在线观看| 欧美日韩性生活| 国产欧美精品日韩区二区麻豆天美| 亚洲精品欧美在线| 激情丁香综合五月| 欧洲精品一区二区| 国产欧美日韩精品一区| 亚洲国产精品久久一线不卡| 国产精品亚洲视频| 欧美日本一道本在线视频| 国产精品久久久一本精品| 日韩精品视频网| 99久久久国产精品免费蜜臀| 日韩午夜激情电影| 中文字幕亚洲不卡| 国产一区二区在线观看免费| 欧美视频一区二区三区四区| 亚洲国产精品99久久久久久久久 | 国产精品1024久久| 欧美日韩一级黄| 国产精品国产成人国产三级| 精品一二三四区| 欧美日韩1区2区| 亚洲美女偷拍久久| 成人深夜福利app| 欧美电影免费提供在线观看| 亚洲午夜精品一区二区三区他趣| 成人激情av网| 日本一区二区视频在线| 老色鬼精品视频在线观看播放| 色哟哟国产精品| 国产精品入口麻豆原神| 99精品黄色片免费大全| 精品国产免费久久| 日本vs亚洲vs韩国一区三区| 欧美综合在线视频| 一区二区在线电影| 国产欧美日韩不卡免费| 精品久久久久久久久久久久久久久 | 日日骚欧美日韩| 欧美体内she精高潮| 一区二区三区丝袜| 91蜜桃在线观看| 中文字幕一区二区视频| 成人综合激情网| 日本一区二区在线不卡| 丰满少妇在线播放bd日韩电影| www久久久久| 国产成人av电影在线观看| 久久久久久久久久久久久夜| 精久久久久久久久久久| 久久婷婷久久一区二区三区| 久久国产精品一区二区| 久久一区二区三区四区| 狠狠色丁香婷婷综合| 欧美精品一区二区三区久久久| 久久精品国产亚洲高清剧情介绍 | 天天综合色天天综合| 欧美日韩国产高清一区二区三区| 亚洲成人手机在线| 91精品国产综合久久久久久漫画| 日韩一区精品视频| 精品久久国产字幕高潮| 国产一区二区三区久久悠悠色av| 国产欧美一区二区三区网站| 成人av电影在线观看| 亚洲精品综合在线| 欧美日韩亚洲综合在线| 日韩国产欧美三级| 精品电影一区二区| 成人精品小蝌蚪| 一区二区三区精品| 欧美一区二区在线看| 国产精品中文字幕一区二区三区| 国产免费成人在线视频| 91啪亚洲精品| 午夜精品久久一牛影视| 精品福利视频一区二区三区| 国产成人99久久亚洲综合精品| 亚洲日本一区二区| 91精品国产全国免费观看| 国产精品综合网| 亚洲一本大道在线| 久久婷婷国产综合精品青草| 一本色道久久综合狠狠躁的推荐| 三级在线观看一区二区 |