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

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

?? listbox.c

?? 使用coderwarrior打開 內含中文字庫
?? 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一区二区三区免费野_久草精品视频
欧美日韩综合在线| 美女性感视频久久| 亚洲精选一二三| 亚洲国产精品成人综合| 精品福利一区二区三区免费视频| 精品粉嫩aⅴ一区二区三区四区| 2021中文字幕一区亚洲| 欧美一区二区三区电影| 欧美一区国产二区| 国产日韩视频一区二区三区| 欧美国产综合一区二区| 亚洲韩国精品一区| 国产麻豆欧美日韩一区| 91久久精品日日躁夜夜躁欧美| 欧美日韩精品高清| 久久久亚洲欧洲日产国码αv| 最新热久久免费视频| 麻豆91在线看| 欧美日韩不卡一区二区| 日本一区二区三区国色天香 | 国产一区二区三区四区在线观看| 99久久免费视频.com| 久久久精品国产免费观看同学| 亚洲精品国产a| 国产一区二区在线看| 欧美久久一区二区| 国产精品午夜在线| 国产伦精品一区二区三区免费| 欧美日韩大陆在线| 欧美激情一区二区三区不卡| 久久精品国产久精国产| 欧美日本韩国一区| 亚洲一区二区三区四区在线免费观看 | 国产精品传媒入口麻豆| 国产精品99久久久久久似苏梦涵| 日韩免费视频一区| 精品亚洲porn| 久久夜色精品一区| 国精产品一区一区三区mba视频 | 亚洲成人av在线电影| 欧美无砖砖区免费| 水蜜桃久久夜色精品一区的特点| 欧美午夜精品电影| 亚洲综合一区在线| 欧美一区二区美女| 国产福利精品导航| 亚洲人一二三区| 91精品国产福利在线观看| 奇米影视在线99精品| 久久精品人人做人人综合 | 精品国产3级a| 不卡一区二区在线| 中文字幕国产精品一区二区| 99麻豆久久久国产精品免费优播| 有坂深雪av一区二区精品| 欧美日韩免费一区二区三区视频| 日韩高清在线不卡| 中文一区二区完整视频在线观看| 欧美视频在线一区| 丰满少妇久久久久久久| 亚洲福利视频一区| 中文字幕乱码亚洲精品一区| 欧美性做爰猛烈叫床潮| 日韩精品五月天| 美女脱光内衣内裤视频久久网站| 91福利视频久久久久| 亚洲成人免费视| 欧美系列亚洲系列| 蜜桃av一区二区三区电影| 日韩精品一区二区三区蜜臀| 极品少妇一区二区三区精品视频| 久久综合狠狠综合| 在线免费观看日本欧美| 国产日韩欧美麻豆| 91福利在线免费观看| 午夜a成v人精品| 中文字幕制服丝袜一区二区三区 | 91精品国产一区二区三区| 久久精品久久99精品久久| 国产日韩欧美精品一区| 一本大道久久a久久精品综合| 亚洲v中文字幕| 精品国产自在久精品国产| 成人h动漫精品一区二| 久久你懂得1024| 欧美日韩免费一区二区三区 | 国产日韩欧美不卡| 国产成人福利片| 天天综合网 天天综合色| 精品日韩欧美一区二区| 91无套直看片红桃| 大尺度一区二区| 日本不卡中文字幕| 亚洲一区二区成人在线观看| 中文字幕精品一区| 丁香一区二区三区| 国产伦精品一区二区三区免费| 中文字幕 久热精品 视频在线| 精品久久人人做人人爱| 日韩午夜精品电影| 欧美日韩精品久久久| 欧美日韩一区不卡| 理论电影国产精品| 国产一区二区导航在线播放| 日本不卡的三区四区五区| 亚洲免费观看视频| 亚洲综合成人在线视频| 一区二区三区日本| 亚洲成a人v欧美综合天堂| 精品成人佐山爱一区二区| 国产乱码精品一区二区三| 婷婷夜色潮精品综合在线| 精东粉嫩av免费一区二区三区| 午夜影院久久久| 国模套图日韩精品一区二区 | 亚洲一二三区在线观看| 亚洲精品成人天堂一二三| 久久久国产精华| 亚洲色图.com| 视频一区欧美精品| 午夜精品一区在线观看| 国产成人午夜电影网| av高清不卡在线| 欧美丝袜丝nylons| 久久精品水蜜桃av综合天堂| 欧美日韩五月天| 国产女同性恋一区二区| 亚洲 欧美综合在线网络| 日本一区二区三区高清不卡| 亚洲精品一区二区三区精华液| 欧美一三区三区四区免费在线看| 久久久久国产免费免费| 亚洲sss视频在线视频| 婷婷久久综合九色综合绿巨人 | 国产精品黄色在线观看| 一卡二卡三卡日韩欧美| 视频一区二区中文字幕| 国产精品99久久久久久久vr| 欧美日韩成人一区二区| 欧美日韩国产精选| 国产精品电影一区二区| 国产乱码精品一区二区三区av| 欧美性受xxxx黑人xyx性爽| 国产三区在线成人av| 精品一二线国产| 欧美一卡二卡在线| 亚洲电影中文字幕在线观看| 亚洲免费观看高清| 国产精品一卡二| 日韩一区二区麻豆国产| 日韩精品欧美成人高清一区二区| 成人小视频在线观看| 日韩精品最新网址| 极品美女销魂一区二区三区 | 国产成人在线视频网站| 91精品国产91综合久久蜜臀| 五月天一区二区| 99视频超级精品| 亚洲第一激情av| 日韩欧美www| 99视频精品在线| 蜜芽一区二区三区| 欧美性xxxxx极品少妇| 秋霞电影网一区二区| 中文字幕精品在线不卡| 91麻豆免费观看| 久久99精品国产麻豆婷婷| 自拍偷拍国产精品| 337p亚洲精品色噜噜| 韩国av一区二区三区四区| 亚洲人成网站色在线观看| 国产成人亚洲精品青草天美| 亚洲国产精品久久久男人的天堂| 国产调教视频一区| 欧美影院午夜播放| 国产精品综合av一区二区国产馆| 亚洲男帅同性gay1069| 国产米奇在线777精品观看| 一区二区免费在线| 中文字幕一区免费在线观看| 国产高清精品久久久久| 看片的网站亚洲| 首页国产欧美日韩丝袜| 99国产欧美另类久久久精品| 亚洲日本在线天堂| 亚洲成人精品在线观看| 国产精品一区二区无线| 99国产精品99久久久久久| 欧美一级爆毛片| 亚洲综合色噜噜狠狠| 精品一区二区三区欧美| 色综合天天综合网天天看片| 欧美日韩视频专区在线播放| 久久久噜噜噜久久中文字幕色伊伊| 国产精品素人视频| 九九久久精品视频| 在线成人免费观看| 一区二区国产视频| 成人黄色a**站在线观看| 2024国产精品视频|