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

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

?? listbox.c

?? 汽車綜合監控儀——廣東省大學生電子設計大賽作品 (獲一等獎) 使用技術:ARM9(S3C2440)
?? 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一区二区三区免费野_久草精品视频
久久国产三级精品| 一个色在线综合| 精品视频一区二区不卡| 在线视频一区二区三区| 欧美视频中文一区二区三区在线观看| 欧美羞羞免费网站| 日韩视频中午一区| 国产精品的网站| 日本不卡视频一二三区| 国产精品77777竹菊影视小说| 粉嫩13p一区二区三区| 欧美在线综合视频| 国产午夜精品福利| 天天影视网天天综合色在线播放| 成人爽a毛片一区二区免费| 欧美专区在线观看一区| 99久久国产综合色|国产精品| 国产激情一区二区三区四区| 在线观看av不卡| 久久人人爽人人爽| 午夜精品福利在线| av在线综合网| 中文字幕不卡三区| 国内精品在线播放| 欧美一区二区精品| 性做久久久久久| 欧美日韩小视频| 亚洲精品伦理在线| 一本一道久久a久久精品综合蜜臀| 精品视频一区二区不卡| 亚洲免费在线视频| 处破女av一区二区| 中文av字幕一区| 国产大陆a不卡| 国产婷婷色一区二区三区| 久久99精品国产91久久来源| 欧美性猛片xxxx免费看久爱| 国产精品婷婷午夜在线观看| 国产精品一品二品| 中文字幕电影一区| 91理论电影在线观看| 一区二区三区久久| 欧美日韩免费观看一区三区| 香港成人在线视频| 亚洲精品一区二区三区福利| 毛片av一区二区| 中文字幕国产一区| 91精品办公室少妇高潮对白| 午夜激情久久久| 久久久久九九视频| 欧洲精品在线观看| 国产在线一区观看| 亚洲欧美视频在线观看视频| 日本不卡高清视频| 久久久精品天堂| 在线视频国产一区| 久久福利视频一区二区| 国产精品动漫网站| 日韩欧美一二三四区| 972aa.com艺术欧美| 精品伊人久久久久7777人| 国产精品女主播av| 欧美一级黄色大片| 日本韩国一区二区三区| 国模无码大尺度一区二区三区| 日韩一区在线看| 久久亚洲精品小早川怜子| 欧美影院精品一区| 国产成人精品免费一区二区| 午夜私人影院久久久久| 最新国产精品久久精品| 久久综合给合久久狠狠狠97色69| 国产宾馆实践打屁股91| 日韩不卡在线观看日韩不卡视频| 国产精品久久福利| 欧美高清在线精品一区| 欧美精品一区二区蜜臀亚洲| 日韩视频免费直播| 欧美精品在线观看播放| 91国产免费观看| 日本伦理一区二区| 欧美日韩一区二区电影| 欧美日韩在线播放三区四区| 91小视频在线观看| 精品视频1区2区| 日韩一卡二卡三卡| 337p日本欧洲亚洲大胆精品 | 成人激情黄色小说| 欧美日韩日日夜夜| 7777精品伊人久久久大香线蕉的 | 精品视频免费看| 日韩一区二区三免费高清| 日韩视频在线观看一区二区| 精品国产精品网麻豆系列| 久久精品一区二区三区四区| 中文字幕视频一区二区三区久| ...中文天堂在线一区| 亚洲最大的成人av| 极品少妇一区二区| 色老汉av一区二区三区| 91精品国产色综合久久不卡电影| 精品福利一区二区三区免费视频| 亚洲国产欧美日韩另类综合| 六月丁香综合在线视频| av欧美精品.com| 欧美一区二区三区四区在线观看 | 日韩和欧美的一区| av影院午夜一区| wwwwww.欧美系列| 午夜欧美大尺度福利影院在线看| 国产在线播放一区二区三区| 在线观看视频一区二区欧美日韩| 久久久天堂av| 日韩视频不卡中文| 亚洲国产精品成人综合| 一区二区三区在线观看视频| 麻豆91免费观看| 欧美性感一类影片在线播放| 国产亚洲欧美色| 蜜臀国产一区二区三区在线播放| 97精品国产97久久久久久久久久久久| 亚洲精品在线网站| 久久99国产精品麻豆| 色激情天天射综合网| 中文字幕一区二区三区在线播放| 理论电影国产精品| 日韩视频在线观看一区二区| 免费在线欧美视频| 在线播放日韩导航| 视频在线观看一区二区三区| 色哟哟一区二区在线观看| 国产精品麻豆久久久| www.在线成人| 亚洲日本在线视频观看| 欧美午夜精品一区二区三区| 天天av天天翘天天综合网色鬼国产 | 亚洲h精品动漫在线观看| 一本到不卡免费一区二区| 亚洲综合男人的天堂| 欧美性猛交xxxx黑人交| 午夜成人在线视频| 欧美一级日韩一级| 成人免费毛片app| 伊人婷婷欧美激情| 欧美影视一区在线| 国产一区二区0| 亚洲gay无套男同| 自拍偷在线精品自拍偷无码专区| 9i在线看片成人免费| 久久99这里只有精品| 一区二区视频免费在线观看| 欧美日韩久久一区| 国产精品亚洲一区二区三区在线| 自拍av一区二区三区| ww亚洲ww在线观看国产| 色综合中文字幕国产 | 制服丝袜亚洲播放| 成人免费毛片app| 国产一区二区免费视频| 香蕉av福利精品导航| 伊人一区二区三区| 亚洲视频免费在线观看| 欧美mv和日韩mv国产网站| 欧美一级久久久久久久大片| 欧美综合天天夜夜久久| 99re热视频这里只精品| 国产精品一区二区在线播放| 亚洲第一电影网| 亚洲综合无码一区二区| 欧美国产一区视频在线观看| 亚洲国产精品传媒在线观看| 日韩一二三四区| 欧美国产一区二区在线观看| 精品欧美一区二区三区精品久久| 91久久国产最好的精华液| 色综合久久久久网| 色偷偷88欧美精品久久久| 99re这里都是精品| 91香蕉视频mp4| 在线观看av不卡| 777奇米四色成人影色区| 制服丝袜国产精品| 精品电影一区二区| 国产欧美一区二区精品性色超碰| 国产精品沙发午睡系列990531| 自拍偷拍亚洲激情| 免费亚洲电影在线| 国产精品一区在线观看你懂的| 91美女福利视频| 欧美一区二区视频免费观看| 日韩午夜精品视频| 国产精品视频你懂的| 日韩国产在线观看一区| 国产精品一级在线| 色婷婷精品久久二区二区蜜臀av| 日韩一区二区三区精品视频| 日本一二三不卡| 看电视剧不卡顿的网站| 91蜜桃视频在线| 欧美国产国产综合|