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

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

?? listbox.c

?? 這是我移植到GBA游戲機上的uCGUI3.24 可以通過模擬器仿真
?? C
?? 第 1 頁 / 共 2 頁
字號:
      LISTBOX_SetSel(hObj, Sel);
    } else {
      Notification = WM_NOTIFICATION_RELEASED;
    }
  } else {     /* Mouse moved out */
    Notification = WM_NOTIFICATION_MOVED_OUT;
  }
  WM_NotifyParent(hObj, Notification);
  return 0;                        /* Message handled */
}

/*********************************************************************
*
*       Callback
*/
static void _LISTBOX_Callback (WM_MESSAGE*pMsg) {
  LISTBOX_Handle hObj = pMsg->hWin;
  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);
  WM_SCROLL_STATE ScrollState;
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_NOTIFY_PARENT:
    switch (pMsg->Data.v) {
    case WM_NOTIFICATION_VALUE_CHANGED:
      WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
      pObj->ScrollState.v = ScrollState.v;
      WM_InvalidateWindow(hObj);
      break;
    case WM_NOTIFICATION_SCROLLBAR_ADDED:
      _SetScrollState(hObj);
      break;
    }
    break;
  case WM_PAINT:
    _Paint(hObj);
    break;
  case WM_TOUCH:
    if (_OnTouch(hObj, pObj, pMsg) == 0)
      return;
    break;
  case WM_DELETE:
    _FreeAttached(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
 case WM_KEY:
    if ( ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
      int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key;
      switch (Key) {
        case GUI_KEY_TAB:
          break;                    /* Send to parent by not doing anything */
        default:
          LISTBOX_AddKey(hObj, Key);
          return;
      }
    }
    break;
  }
  WM_DefaultProc(pMsg);
}

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

LISTBOX_Handle LISTBOX_CreateAsChild(
  const GUI_ConstString* ppText,
  WM_HWIN hWinParent,
  int x0, int y0, int xsize, int ysize, int Flags)
{
  LISTBOX_Handle hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, 
                                               hWinParent, Flags, _LISTBOX_Callback,
                                               sizeof(LISTBOX_Obj)-sizeof(WM_Obj));
  if (hObj) {
    LISTBOX_Obj* pObj   = LISTBOX_H2P(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED);
    /* pObj->ppText = 0; */   /* Zero init not required */
    pObj->pFont  = _pDefaultFont;
    pObj->aBackColor[0] = LISTBOX_BKCOLOR0_DEFAULT;
    pObj->aBackColor[1] = LISTBOX_BKCOLOR1_DEFAULT;
    pObj->aBackColor[2] = LISTBOX_BKCOLOR2_DEFAULT;
    pObj->aTextColor[0] = LISTBOX_TEXTCOLOR0_DEFAULT;
    pObj->aTextColor[1] = LISTBOX_TEXTCOLOR1_DEFAULT;
    pObj->aTextColor[2] = LISTBOX_TEXTCOLOR2_DEFAULT;
    if (hObj && ppText) {
      LISTBOX_Obj* pObj   = LISTBOX_H2P(hObj);
      INIT_ID(pObj);
      /* init member variables */
      /* Check size */
      if (!xsize) {
        const GUI_FONT* pFontOld = GUI_SetFont(pObj->pFont);
        int i;
		    for (i=0; *(ppText+i); i++) {
          int Size = GUI_GetStringDistX(*(ppText+i));
          if (Size>xsize)
			      xsize = Size;
		    }
        GUI_SetFont(pFontOld);
	    }
      /* Set non-zero attributes */
      LISTBOX_SetText(hObj, ppText);
    }
    _CalcScrollParas(hObj);
  }
  return hObj;
}

LISTBOX_Handle LISTBOX_Create(
                    const GUI_ConstString* ppText,
                    int x0, int y0, int xsize, int ysize, int Flags)
{
   return LISTBOX_CreateAsChild(ppText, WM_HWIN_NULL /*hWin*/, x0, y0, xsize, ysize, Flags);
}

LISTBOX_Handle LISTBOX_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) {
  LISTBOX_Handle  hThis;
  GUI_USE_PARA(cb);
  hThis = LISTBOX_CreateAsChild(0,
                                hWinParent,
                                pCreateInfo->x0 + x0, 
                                pCreateInfo->y0 + y0, 
                                pCreateInfo->xSize, 
                                pCreateInfo->ySize, 
                                pCreateInfo->Flags);
  if (hThis) {
    LISTBOX_Obj* pObj = LISTBOX_H2P(hThis);
    INIT_ID(pObj);
    pObj->Widget.Id     = pCreateInfo->Id;
    pObj->Widget.State  = LISTBOX_STATE_INACTIVE;
  }
  return hThis;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/

void LISTBOX_AddKey(LISTBOX_Handle hObj, int Key) {
  if (hObj) {
    WM_LOCK();
    switch (Key) {
      case GUI_KEY_DOWN:
        LISTBOX_IncSel(hObj);
        break;
      case GUI_KEY_UP:
        LISTBOX_DecSel(hObj);
        break;
      default:
        _SelectByKey(hObj, Key);
        break;
    }
    WM_UNLOCK();
  }
}

void LISTBOX_AddString(LISTBOX_Handle hObj, const char* s) {
  int len;
  WM_HMEM hNewItem, hNewBuffer;
  WM_HMEM *pOldBuffer;
  WM_HMEM *pNewBuffer;
  char* sNewString;
  LISTBOX_Obj* pObj;
  if (hObj && s) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    len = strlen(s);
    if ((hNewItem = WM_ALLOC(len +1)) ==0) {
      GUI_DEBUG_ERROROUT("LISTBOX_AddString failed to alloc buffer");
    } else {
      /* Add the new item to the buffer */
      if ((hNewBuffer = WM_ALLOC(sizeof(WM_HMEM) * (pObj->NumItems + 1))) == 0) {
        GUI_DEBUG_ERROROUT("LISTBOX_AddString failed to alloc buffer");
        WM_FREE(hNewItem);
      } else {
        pNewBuffer = WM_HMEM2Ptr(hNewBuffer);
        sNewString = WM_HMEM2Ptr(hNewItem);
        strcpy(sNewString, s);
        /* Copy contents of handle buffer (if any) */
        if (pObj->haHandle) {
          pOldBuffer = WM_HMEM2Ptr(pObj->haHandle);
          memcpy(pNewBuffer, pOldBuffer, pObj->NumItems * sizeof(WM_HMEM));
          WM_FREE(pObj->haHandle);
        }
        *(pNewBuffer + pObj->NumItems) = hNewItem;
        pObj->haHandle = hNewBuffer;
        pObj->NumItems++;
      }
    }
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       LISTBOX_GetNumItems
*/
int LISTBOX_GetNumItems(LISTBOX_Handle hObj) {
  int r = 0;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    r = pObj->NumItems;
    WM_UNLOCK();
  }
  return r;
}


void LISTBOX_SetText(LISTBOX_Handle hObj, const GUI_ConstString* ppText) {
  int i;
  const char* s;
  if (hObj) {
    WM_LOCK();
    if (ppText) {
      for (i = 0; (s = *(ppText+i)) != 0; i++) {
        LISTBOX_AddString(hObj, s);
      }
    }
    _CalcScrollParas(hObj);
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetFont(LISTBOX_Handle hObj, const GUI_FONT* pfont) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->pFont = pfont;
    _CalcScrollParas(hObj);
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}


void LISTBOX_SetBackColor(LISTBOX_Handle hObj, int index, GUI_COLOR color) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->aBackColor[index] = color;
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetTextColor(LISTBOX_Handle hObj, int index, GUI_COLOR color) {
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    pObj->aTextColor[index] = color;
    LISTBOX_Invalidate(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_SetSel (LISTBOX_Handle hObj, int Sel) {
  int NumItems, MaxSel;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    NumItems = _GetNumItems(pObj);
    MaxSel = NumItems ? NumItems-1 : 0;
    if (Sel > MaxSel) {
      Sel = MaxSel;
    }
    if (Sel != pObj->Sel) {
      pObj->Sel = Sel;
      LISTBOX_Invalidate(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_SEL_CHANGED);
    }
    _CheckSel(hObj);
    WM_UNLOCK();
  }
}

void LISTBOX_IncSel      (LISTBOX_Handle hObj) {
  int Sel = LISTBOX_GetSel(hObj);
  LISTBOX_SetSel(hObj, Sel+1);
}

void LISTBOX_DecSel      (LISTBOX_Handle hObj) {
  int Sel = LISTBOX_GetSel(hObj);
  if (Sel)
	  Sel--;
  LISTBOX_SetSel(hObj, Sel);
}

int  LISTBOX_GetSel (LISTBOX_Handle hObj) {
  int r = 0;
  LISTBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = LISTBOX_H2P(hObj);
    ASSERT_IS_VALID_PTR(pObj);
    r = pObj->Sel;
    WM_UNLOCK();
  }
  return r;
}

void LISTBOX_SetDefaultFont(const GUI_FONT* pFont) {
  _pDefaultFont = pFont;
}

const GUI_FONT* LISTBOX_GetDefaultFont(void) {
  return _pDefaultFont;
}

#else                            /* Avoid problems with empty object modules */
  void LISTBOX_C(void) {}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美黑人一区二区三区| 日韩三级.com| 91精品久久久久久久久99蜜臂| 欧美va天堂va视频va在线| 亚洲欧洲www| 久久电影网站中文字幕| 色天天综合久久久久综合片| 久久精品视频一区二区| 视频精品一区二区| 91传媒视频在线播放| 国产三区在线成人av| 天使萌一区二区三区免费观看| 国产一区视频网站| 欧美一区二区三区播放老司机| 亚洲人成网站精品片在线观看| 国产成人免费在线视频| 精品欧美一区二区三区精品久久| 亚洲午夜在线电影| 99国产精品久久久| 国产精品免费视频一区| 国产伦精品一区二区三区免费迷| 日韩欧美国产不卡| 日韩av中文字幕一区二区| 色妞www精品视频| 综合久久一区二区三区| 成人免费观看视频| 中文字幕精品一区二区三区精品 | 国产麻豆日韩欧美久久| 日韩欧美自拍偷拍| 蜜臀国产一区二区三区在线播放 | 五月天久久比比资源色| 91国内精品野花午夜精品| 亚洲日本免费电影| 95精品视频在线| 亚洲激情综合网| 色av综合在线| 亚洲成人免费视频| 在线不卡免费av| 麻豆精品久久久| 久久久99久久精品欧美| 国内久久精品视频| 国产日产欧美一区二区三区| 国产精品一二三在| 国产精品美女一区二区在线观看| www.亚洲在线| 一区二区视频免费在线观看| 欧美在线播放高清精品| 亚洲一区二区3| 91精品黄色片免费大全| 蜜桃av一区二区在线观看| 久久蜜桃av一区精品变态类天堂| 国产a区久久久| 亚洲情趣在线观看| 欧美精品乱码久久久久久| 极品瑜伽女神91| 国产精品免费久久久久| 欧美午夜精品电影| 精品影院一区二区久久久| 日本一区二区高清| 欧美视频精品在线| 极品少妇xxxx精品少妇| 日韩理论片一区二区| 欧美日韩一二三区| 国产精品2024| 亚洲国产日韩av| 久久综合国产精品| 色哟哟在线观看一区二区三区| 爽爽淫人综合网网站| 国产亚洲一区字幕| 欧美三级中文字幕| 国产传媒久久文化传媒| 有码一区二区三区| 日韩精品在线一区| 成人av电影免费在线播放| 亚欧色一区w666天堂| 国产日韩成人精品| 欧美精品免费视频| 91免费观看国产| 久久99精品久久久久久动态图| 亚洲六月丁香色婷婷综合久久| 日韩免费电影网站| 欧美性色欧美a在线播放| 国产精品影音先锋| 青青草97国产精品免费观看无弹窗版| 久久久久久久综合狠狠综合| 欧美午夜片在线观看| 成人网男人的天堂| 国内精品国产三级国产a久久| 亚洲一区二区欧美| 亚洲欧美自拍偷拍| 久久九九久久九九| 欧美一区二区成人6969| 在线免费观看日韩欧美| 丰满白嫩尤物一区二区| 久久66热re国产| 天天做天天摸天天爽国产一区| 中文字幕在线一区二区三区| 26uuu久久综合| 日韩欧美国产不卡| 在线不卡一区二区| 欧美日韩一级黄| 在线精品视频免费观看| 91一区二区三区在线播放| 久久精品国产精品亚洲精品| 日本中文一区二区三区| 亚洲永久免费av| 夜夜揉揉日日人人青青一国产精品| 日本一区二区三区免费乱视频| 精品国内二区三区| 日韩欧美的一区二区| 91精品国产乱| 日韩视频123| 欧美一区二区三区四区久久| 欧美丰满美乳xxx高潮www| 欧美日韩三级一区| 欧美日韩dvd在线观看| 欧美日韩综合不卡| 欧美人与z0zoxxxx视频| 欧美日韩成人激情| 91麻豆精品国产91久久久久| 欧美伦理视频网站| 91超碰这里只有精品国产| 欧美日韩三级一区二区| 91精品一区二区三区在线观看| 欧美日韩国产免费一区二区| 欧美日韩国产综合视频在线观看 | 天天色天天操综合| 天天综合色天天综合| 日本女人一区二区三区| 日韩高清电影一区| 久久99精品国产麻豆婷婷洗澡| 国产在线精品免费av| 成人深夜在线观看| 日本高清不卡视频| 91麻豆精品久久久久蜜臀| 欧美精品一区二区久久婷婷| 久久精品视频免费| 亚洲欧美另类小说视频| 亚洲国产成人高清精品| 麻豆91免费观看| 成人av网址在线| 欧美精选一区二区| 久久夜色精品国产欧美乱极品| 中文欧美字幕免费| 亚洲已满18点击进入久久| 久色婷婷小香蕉久久| 国产精品一级片| 91丝袜高跟美女视频| 色综合视频在线观看| 欧美一区二区在线免费播放| 日韩亚洲欧美一区| 精品国产乱子伦一区| 亚洲色图一区二区三区| 亚洲一级二级三级在线免费观看| 亚洲午夜激情网站| 美女在线视频一区| 91视频在线观看免费| 欧美日韩中文字幕一区二区| 3d动漫精品啪啪一区二区竹菊| 日韩精品一区二区三区中文不卡| 国产精品不卡视频| 三级在线观看一区二区| 国内外成人在线| 91一区一区三区| 国产亚洲人成网站| 亚洲综合色噜噜狠狠| 日本成人在线电影网| 亚洲一级不卡视频| 国产成人精品三级| 日本韩国欧美在线| 欧美日韩午夜在线视频| 26uuu精品一区二区三区四区在线| 日本一区二区三区免费乱视频| 亚洲国产另类av| 波多野结衣的一区二区三区| 欧美日韩国产区一| 中文av字幕一区| 午夜精品久久久久久久久| 91在线你懂得| 欧美xxxx在线观看| 亚洲一区二区精品3399| 国产毛片精品国产一区二区三区| 91成人免费在线| 国产欧美日韩在线看| 天天av天天翘天天综合网色鬼国产| 成人av资源站| 精品国产免费一区二区三区四区| 亚洲精品久久久蜜桃| 国内久久精品视频| 欧美精品一区二区三区四区 | 精品粉嫩aⅴ一区二区三区四区| 亚洲国产综合视频在线观看| 国产一区欧美日韩| 555www色欧美视频| 中文字幕在线免费不卡| 大尺度一区二区| 久久新电视剧免费观看| 爽好多水快深点欧美视频| 国内外精品视频| 久久久久久99精品|