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

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

?? listbox.c

?? Samsung ARM7 s3c44b0 + uC-OSii + uC-GUI 完美的綜合到了一起
?? C
字號:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/GUI is protected by international copyright laws. Knowledge of the*              source code may not be used to write a similar product. This file may*              only be used in accordance with a license and should not be redistributed*              in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------File        : LISTBOX.cPurpose     : Multiple choice for emWin GSC---------------------------END-OF-HEADER------------------------------*/#include <stdlib.h>#include <string.h>#include "LISTBOX.h"#include "SCROLLBAR.h"#include "WIDGET.h"#include "GUIDebug.h"#include "GUI_Protected.h"#include "WM_Intern.h"#if GUI_WINSUPPORT/***********************************************************************       Private config defaults************************************************************************//* Support for 3D effects */#ifndef LISTBOX_USE_3D  #define LISTBOX_USE_3D 1#endif/* Define default fonts */#ifndef LISTBOX_FONT_DEFAULT  #define LISTBOX_FONT_DEFAULT &GUI_Font13_1#endif/* Define colors */#ifndef LISTBOX_BKCOLOR0_DEFAULT  #define LISTBOX_BKCOLOR0_DEFAULT GUI_WHITE#endif#ifndef LISTBOX_BKCOLOR1_DEFAULT  #define LISTBOX_BKCOLOR1_DEFAULT GUI_GRAY#endif#ifndef LISTBOX_BKCOLOR2_DEFAULT  #define LISTBOX_BKCOLOR2_DEFAULT GUI_WHITE#endif#ifndef LISTBOX_TEXTCOLOR0_DEFAULT  #define LISTBOX_TEXTCOLOR0_DEFAULT GUI_BLACK#endif#ifndef LISTBOX_TEXTCOLOR1_DEFAULT  #define LISTBOX_TEXTCOLOR1_DEFAULT GUI_BLACK#endif#ifndef LISTBOX_TEXTCOLOR2_DEFAULT  #define LISTBOX_TEXTCOLOR2_DEFAULT GUI_BLACK#endif/***********************************************************************       Object definition************************************************************************/typedef struct {  WIDGET Widget;  I16 Sel;                   /* current selection */  WM_SCROLL_STATE ScrollState;  const GUI_ConstString* ppText;  const GUI_FONT* pFont;  GUI_COLOR aBackColor[3];  GUI_COLOR aTextColor[3];  #if GUI_DEBUG_LEVEL >1    int DebugId;  #endif  } LISTBOX_Obj;/***********************************************************************       Static data************************************************************************/static const GUI_FONT* _pDefaultFont = LISTBOX_FONT_DEFAULT;/***********************************************************************       Macros for internal use************************************************************************/#define LISTBOX_H2P(h) (LISTBOX_Obj*) WM_HMEM2Ptr(h)#if GUI_DEBUG_LEVEL >1  #define OBJECT_ID 0x4C69   /* Magic numer, should be unique if possible */  #define ASSERT_IS_VALID_PTR(p) GUI_DEBUG_ERROROUT_IF(p->DebugId != OBJECT_ID, "EDIT.C: Wrong handle type or Object not init'ed")  #define INIT_ID(p)   p->DebugId = OBJECT_ID  #define DEINIT_ID(p) p->DebugId = 0#else  #define ASSERT_IS_VALID_PTR(p)  #define INIT_ID(p)  #define DEINIT_ID(p)#endif/***********************************************************************       Static routines************************************************************************//***********************************************************************       _GetNumVisItems  Returns:    Number of fully or partially visible items*/static int _GetNumVisItems(LISTBOX_Obj* pObj) {  int FontDist = GUI_GetYDistOfFont(pObj->pFont);  int ysize = WM__GetWindowSizeY(&pObj->Widget.Win);  ysize -= 2*  pObj->Widget.pEffect->EffectSize;  if (FontDist)    return ysize  / FontDist;  return 1;}/***********************************************************************       _GetNumItems  Returns:    Number of fully or partially visible items*/static int _GetNumItems(LISTBOX_Obj* pObj) {  int i;  const GUI_ConstString* ppText = pObj->ppText;  if (ppText) {    for (i=0; *(ppText+i); i++);	  return i;  }  return 0;}static void _SetScrollState(WM_HWIN hWin) {  LISTBOX_Obj* pObj    = LISTBOX_H2P(hWin);  WIDGET__SetScrollState(hWin, &pObj->ScrollState, NULL);}static void _CalcScrollParas(WM_HWIN hWin) {  LISTBOX_Obj* pObj    = LISTBOX_H2P(hWin);  pObj->ScrollState.NumItems = _GetNumItems(pObj);  pObj->ScrollState.PageSize = _GetNumVisItems(pObj);}static void _SetScroll(LISTBOX_Handle hObj, LISTBOX_Obj* pObj, int iScroll) {  pObj->ScrollState.v = iScroll;  _SetScrollState(hObj);}static void _CheckSel(LISTBOX_Handle hObj) {  int Sel;  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);  Sel = pObj->Sel;  /* Check if we have to scroll up */  if (Sel < pObj->ScrollState.v) {    _SetScroll(hObj, pObj, Sel);  } else {  /* Check if we have to scroll down */    if (Sel > pObj->ScrollState.v + pObj->ScrollState.PageSize -1) {      _SetScroll(hObj, pObj, Sel - (pObj->ScrollState.PageSize -1));    }  }   }static int _Tolower(int Key) {  if ((Key >= 0x41) && (Key <= 0x5a)) {    Key += 0x20;  }  return Key;}static void _SelectByKey(LISTBOX_Handle hObj, int Key) {  int i;  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);  Key = _Tolower(Key);  for (i = 0; i < _GetNumItems(pObj); i++) {    char c = _Tolower(*(*(pObj->ppText + i)));    if (c == Key) {      LISTBOX_SetSel(hObj, i);      break;    }  }}/***********************************************************************       _Paint*/static void _Paint(LISTBOX_Handle hObj) {  int i;  int Border;  GUI_RECT r;  int FontDistY;  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);  int NumItems = _GetNumItems(pObj);  const GUI_ConstString* ppText = pObj->ppText;  Border = pObj->Widget.pEffect->EffectSize;  GUI_SetFont(pObj->pFont);  FontDistY = GUI_GetFontDistY();  if (Border) {    GUI_SetBkColor(pObj->aBackColor[0]);    GUI_Clear();  }  /* Calculate rect used for painting (subtract border) */  WM_GetClientRect(&r);  r.x1 -= Border;  r.y1 -= Border;  r.y0 -= Border;  WM_SetUserClipArea(&r);  for (i = pObj->ScrollState.v; i < NumItems; i++) {    int y, ColorIndex;    y = Border + (i - pObj->ScrollState.v) * FontDistY;    if (i == pObj->Sel) {      ColorIndex = (pObj->Widget.State & WIDGET_STATE_FOCUS) ? 2 : 1;    } else {      ColorIndex = 0;    }    GUI_SetBkColor(pObj->aBackColor[ColorIndex]);    GUI_SetColor  (pObj->aTextColor[ColorIndex]);    GUI_ClearRect(Border, y, Border, y + FontDistY -1);    GUI_DispStringAt(*(ppText+i), Border+1, y);    GUI_DispCEOL();  }  WM_SetUserClipArea(NULL);  /* Draw the 3D effect (if configured) */  WIDGET__EFFECT_DrawDown(&pObj->Widget);}/***********************************************************************       _OnTouch*/static int _OnTouch(LISTBOX_Handle hObj, LISTBOX_Obj* pObj, WM_MESSAGE*pMsg) {  int Notification;  int Sel;  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;  int FontDistY = GUI_GetYDistOfFont(pObj->pFont);  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */    if (pState->Pressed) {      Sel = pState->y / FontDistY + pObj->ScrollState.v;       WM_SetFocus(hObj);      Notification = WM_NOTIFICATION_CLICKED;      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:    if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {      WM_GetScrollState(pMsg->hWinSrc, &ScrollState);    }    pObj->ScrollState.v = ScrollState.v;    WM_InvalidateWindow(hObj);    break;  case WM_ADD_SCROLLBAR:    _SetScrollState(hObj);    break;  case WM_PAINT:    _Paint(hObj);    break;  case WM_TOUCH:    if (_OnTouch(hObj, pObj, pMsg) == 0)      return;    break;  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] = 0xffffff;            /* Non selected state */    pObj->aBackColor[1] = LISTBOX_BKCOLOR1_DEFAULT;    /* selected state */    pObj->aBackColor[2] = GUI_BLUE;            /* selected state with focus */    pObj->aTextColor[0] = 0x000000;            /* Non selected state */    pObj->aTextColor[1] = 0xffffff;            /* selected state */    pObj->aTextColor[2] = 0xffffff;            /* selected state with focus */    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 */      pObj->ppText = 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_SetText(LISTBOX_Handle hObj, const GUI_ConstString* ppText) {  LISTBOX_Obj* pObj;  if (hObj) {    WM_LOCK();    pObj = LISTBOX_H2P(hObj);    ASSERT_IS_VALID_PTR(pObj);    pObj->ppText = ppText;    _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) {  LISTBOX_Obj* pObj = LISTBOX_H2P(hObj);  int Sel = LISTBOX_GetSel(hObj);  pObj = pObj;  ASSERT_IS_VALID_PTR(pObj);  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一区二区三区免费野_久草精品视频
91免费小视频| 国产精品人成在线观看免费 | 不卡的av网站| 欧美精品色综合| 国产精品嫩草久久久久| 日韩av一二三| 色综合久久久网| 久久久久久久久久看片| 亚洲大片精品永久免费| 高清不卡在线观看av| 日韩欧美的一区| 亚洲v中文字幕| 91同城在线观看| 久久精品夜夜夜夜久久| 蜜臀av一级做a爰片久久| 在线国产亚洲欧美| 国产精品午夜春色av| 全部av―极品视觉盛宴亚洲| 日本伦理一区二区| 中文字幕一区免费在线观看| 国产精品自在欧美一区| 日韩欧美国产午夜精品| 五月天丁香久久| 欧美日韩在线免费视频| 日韩毛片精品高清免费| 国产91精品久久久久久久网曝门 | 97久久超碰国产精品| 久久网站最新地址| 久久66热re国产| 777奇米四色成人影色区| 亚洲一区二区成人在线观看| 91亚洲国产成人精品一区二区三 | 亚洲人成在线播放网站岛国| 不卡的电影网站| 国产精品久久久久久久久快鸭| 国产精品资源在线看| 精品福利一二区| 国产精品亚洲一区二区三区妖精| 欧美va在线播放| 国产一区二区毛片| 久久久精品国产免大香伊 | wwww国产精品欧美| 国产成人亚洲综合a∨猫咪| 26uuu国产电影一区二区| 国产精品亚洲午夜一区二区三区| 国产色产综合色产在线视频| 成人精品gif动图一区| 中文字幕一区日韩精品欧美| 97se亚洲国产综合自在线观| 亚洲主播在线观看| 欧美精选一区二区| 精品夜夜嗨av一区二区三区| 欧美大白屁股肥臀xxxxxx| 国产最新精品精品你懂的| 国产午夜亚洲精品理论片色戒| 不卡的av电影在线观看| 亚洲综合无码一区二区| 欧美一区二区在线观看| 国产精品资源在线| 一区二区三区在线观看视频 | 日韩激情中文字幕| 久久久综合激的五月天| 一本大道av一区二区在线播放| 亚洲精品高清在线观看| 日韩视频在线一区二区| 波多野结衣91| 日本欧美一区二区在线观看| 日本一区二区三区高清不卡| 欧美色精品在线视频| 国产精品一区二区久久精品爱涩| ...xxx性欧美| 日韩女优毛片在线| 色综合天天综合网天天看片| 久久99蜜桃精品| 亚洲欧美欧美一区二区三区| 日韩视频一区二区| 91福利在线导航| 国产一区二区三区高清播放| 亚洲主播在线观看| 国产精品久久久久婷婷二区次| 欧美日韩在线精品一区二区三区激情| 国产激情一区二区三区桃花岛亚洲| 一区二区三区久久| 国产日韩欧美亚洲| 日韩你懂的在线播放| 在线观看免费成人| 成人午夜av影视| 极品少妇xxxx精品少妇偷拍| 亚洲综合偷拍欧美一区色| 国产欧美日韩精品在线| 欧美一区二区免费| 欧美日韩免费观看一区二区三区 | 久久精品国产**网站演员| 亚洲日本在线看| 久久久久久久综合日本| 日韩三区在线观看| 欧美中文一区二区三区| hitomi一区二区三区精品| 黑人巨大精品欧美黑白配亚洲| 亚洲www啪成人一区二区麻豆| 亚洲欧美怡红院| 国产精品色呦呦| 国产亚洲一区二区在线观看| 日韩情涩欧美日韩视频| 欧美精选一区二区| 欧美日韩国产一级片| 欧美日韩中文另类| 一本大道久久a久久精二百| 成人av资源在线观看| 国产乱理伦片在线观看夜一区| 日本三级亚洲精品| 美女性感视频久久| 免费成人性网站| 蜜臀a∨国产成人精品| 日本美女一区二区三区| 免费的成人av| 久久精品国产99| 国精产品一区一区三区mba桃花| 另类小说图片综合网| 久久精品国产一区二区| 久久精品国产在热久久| 蜜桃久久精品一区二区| 精品无人码麻豆乱码1区2区 | 欧美一区国产二区| 日韩欧美精品在线视频| 精品第一国产综合精品aⅴ| 精品国产乱码久久久久久夜甘婷婷 | 日韩免费观看高清完整版在线观看 | 国产色婷婷亚洲99精品小说| 国产日产欧美一区二区视频| 国产色91在线| 亚洲婷婷综合久久一本伊一区| 中文字幕中文字幕在线一区| 亚洲另类在线一区| 香蕉成人啪国产精品视频综合网 | 91麻豆精品国产自产在线观看一区 | 久久先锋影音av| 国产精品你懂的| 一区二区三区免费| 日本中文一区二区三区| 国产一区二区三区免费播放| www.亚洲精品| 欧美男人的天堂一二区| 日韩一级精品视频在线观看| 国产亚洲综合av| 一区二区三区在线免费视频| 日本不卡高清视频| 懂色av中文一区二区三区| 日本精品一区二区三区高清| 欧美一级一区二区| 国产精品欧美一区二区三区| 一区二区三区精品视频在线| 久久99精品视频| 波多野结衣中文一区| 精品视频一区二区不卡| 精品三级av在线| 一区二区中文视频| 奇米精品一区二区三区在线观看 | 国产日韩精品一区二区三区 | 另类的小说在线视频另类成人小视频在线 | 欧美精品一区二| 亚洲综合色在线| 国产一区三区三区| 欧美私模裸体表演在线观看| 久久亚洲欧美国产精品乐播 | 欧美日韩夫妻久久| 国产三级欧美三级| 日韩高清不卡一区二区三区| av激情综合网| 精品粉嫩超白一线天av| 一级做a爱片久久| www.日韩在线| 久久午夜老司机| 奇米色一区二区三区四区| 色伊人久久综合中文字幕| 2023国产精品| 肉色丝袜一区二区| 色婷婷精品久久二区二区蜜臀av| 久久综合久久综合久久综合| 亚洲影院理伦片| 91美女片黄在线观看91美女| 日本一区二区三区久久久久久久久不 | 国产一区二区三区不卡在线观看| 欧美日韩国产经典色站一区二区三区 | 欧美一区二区视频在线观看| 玉米视频成人免费看| 91在线无精精品入口| 欧美激情一区二区三区四区| 久久精品国产秦先生| 91精品国产美女浴室洗澡无遮挡| 亚洲精品乱码久久久久久| 99久久国产综合精品麻豆| 国产日本欧洲亚洲| 国产成人av网站| 国产亲近乱来精品视频| 国产在线视频精品一区| 精品国产乱码久久久久久久久| 免费看欧美美女黄的网站| 国产精品欧美久久久久一区二区| 韩国欧美国产1区|