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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dropdown.c

?? UC_GUI開發(fā)源代碼,里面含有范例,源文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                             uC/GUI V3.98
*                        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        : DROPDOWN.c
Purpose     : Implementation of dropdown widget
---------------------------END-OF-HEADER------------------------------
*/

#include "GUI_ARRAY.h"
#include <stdlib.h>
#include <string.h>
#include "DROPDOWN.h"
#include "DROPDOWN_Private.h"
#include "SCROLLBAR.h"
#include "WIDGET.h"
#include "GUIDebug.h"
#include "GUI_Protected.h"
#include "WM_Intern.h"
#include "LISTBOX.h"

#if GUI_WINSUPPORT

/*********************************************************************
*
*       Private config defaults
*
**********************************************************************
*/

/* Define default fonts */
#ifndef   DROPDOWN_FONT_DEFAULT
  #if   WIDGET_USE_SCHEME_SMALL
    #define DROPDOWN_FONT_DEFAULT &GUI_Font13_1
  #elif WIDGET_USE_SCHEME_MEDIUM
    #define DROPDOWN_FONT_DEFAULT &GUI_Font16_1
  #elif WIDGET_USE_SCHEME_LARGE
    #define DROPDOWN_FONT_DEFAULT &GUI_Font24_1
  #endif
#endif

/* Define colors */
#ifndef   DROPDOWN_BKCOLOR0_DEFAULT
  #define DROPDOWN_BKCOLOR0_DEFAULT GUI_WHITE     /* Not selected */
#endif

#ifndef   DROPDOWN_BKCOLOR1_DEFAULT
  #define DROPDOWN_BKCOLOR1_DEFAULT GUI_GRAY      /* Selected, no focus */
#endif

#ifndef   DROPDOWN_BKCOLOR2_DEFAULT
  #define DROPDOWN_BKCOLOR2_DEFAULT GUI_BLUE      /* Selected, focus */
#endif

#ifndef   DROPDOWN_TEXTCOLOR0_DEFAULT
  #define DROPDOWN_TEXTCOLOR0_DEFAULT GUI_BLACK   /* Not selected */
#endif

#ifndef   DROPDOWN_TEXTCOLOR1_DEFAULT
  #define DROPDOWN_TEXTCOLOR1_DEFAULT GUI_WHITE   /* Selected, no focus */
#endif

#ifndef   DROPDOWN_TEXTCOLOR2_DEFAULT
  #define DROPDOWN_TEXTCOLOR2_DEFAULT GUI_WHITE   /* Selected, focus */
#endif

#ifndef   SCROLLBAR_COLOR_ARROW_DEFAULT
  #define SCROLLBAR_COLOR_ARROW_DEFAULT GUI_BLACK /* Arrow color */
#endif

#ifndef   SCROLLBAR_COLOR_BUTTON_DEFAULT
  #define SCROLLBAR_COLOR_BUTTON_DEFAULT 0xc0c0c0 /* Button color */
#endif

#ifndef   DROPDOWN_BORDER_DEFAULT
  #define DROPDOWN_BORDER_DEFAULT 2
#endif

#ifndef   DROPDOWN_ALIGN_DEFAULT
  #define DROPDOWN_ALIGN_DEFAULT GUI_TA_LEFT      /* Default text alignment */
#endif

#ifndef   DROPDOWN_KEY_EXPAND
  #define DROPDOWN_KEY_EXPAND GUI_KEY_SPACE
#endif

#ifndef   DROPDOWN_KEY_SELECT
  #define DROPDOWN_KEY_SELECT GUI_KEY_ENTER
#endif

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

DROPDOWN_PROPS DROPDOWN__DefaultProps = {
  DROPDOWN_FONT_DEFAULT,
  DROPDOWN_BKCOLOR0_DEFAULT,
  DROPDOWN_BKCOLOR1_DEFAULT,
  DROPDOWN_BKCOLOR2_DEFAULT,
  DROPDOWN_TEXTCOLOR0_DEFAULT,
  DROPDOWN_TEXTCOLOR1_DEFAULT,
  DROPDOWN_TEXTCOLOR2_DEFAULT,
  SCROLLBAR_COLOR_ARROW_DEFAULT,
  SCROLLBAR_COLOR_BUTTON_DEFAULT,
  GUI_INVALID_COLOR,
  GUI_INVALID_COLOR,
  GUI_INVALID_COLOR,
  DROPDOWN_BORDER_DEFAULT,
  DROPDOWN_ALIGN_DEFAULT
};

/*********************************************************************
*
*       Static routines
*
**********************************************************************
*/
/*********************************************************************
*
*       DROPDOWN__GetNumItems

  Returns:
    Number of fully or partially visible items
*/
int DROPDOWN__GetNumItems(DROPDOWN_Obj* pObj) {
  return pObj->Handles.NumItems;
}

/*********************************************************************
*
*       _GethItem

  Returns:
    Handle of the specified item
*/
static WM_HMEM _GethItem(DROPDOWN_Obj* pObj, int Index) {
  return GUI_ARRAY_GethItem(&pObj->Handles, Index);
}

/*********************************************************************
*
*       _DrawTriangleDown
*/
static void _DrawTriangleDown(int x, int y, int Size) {
  for (; Size >= 0; Size--, y++ ) {
    GUI_DrawHLine(y, x - Size, x + Size);
  }
}
/*********************************************************************
*
*       _GetpItem

  Returns:
    Pointer to the specified item
*/
static const char* _GetpItem(DROPDOWN_Obj* pObj, int Index) {
  const char* s = NULL;
  WM_HMEM h = _GethItem(pObj, Index);
  if (h) {
    s = (const char*) GUI_ALLOC_h2p(h);
  }
  return s;
}

/*********************************************************************
*
*       _Tolower
*/
static int _Tolower(int Key) {
  if ((Key >= 0x41) && (Key <= 0x5a)) {
    Key += 0x20;
  }
  return Key;
}

/*********************************************************************
*
*       _SelectByKey
*/
static void _SelectByKey(DROPDOWN_Handle hObj, int Key) {
  int i;
  DROPDOWN_Obj* pObj;
  pObj = DROPDOWN_H2P(hObj);
  Key = _Tolower(Key);
  for (i = 0; i < DROPDOWN__GetNumItems(pObj); i++) {
    char c = _Tolower(*_GetpItem(pObj, i));
    if (c == Key) {
      DROPDOWN_SetSel(hObj, i);
      break;
    }
  }
}

/*********************************************************************
*
*       _FreeAttached
*/
static void _FreeAttached(DROPDOWN_Obj* pObj) {
  GUI_ARRAY_Delete(&pObj->Handles);
  WM_DeleteWindow(pObj->hListWin);
}

/*********************************************************************
*
*       _Paint
*/
static void _Paint(DROPDOWN_Handle hObj) {
  int Border;
  GUI_RECT r;
  const char* s;
  int InnerSize, ColorIndex;
  DROPDOWN_Obj* pObj;
  int TextBorderSize;
  /* Do some initial calculations */
  pObj = DROPDOWN_H2P(hObj);
  Border = pObj->Widget.pEffect->EffectSize;
  TextBorderSize = pObj->Props.TextBorderSize;
  GUI_SetFont(pObj->Props.pFont);
  ColorIndex = (pObj->Widget.State & WIDGET_STATE_FOCUS) ? 2 : 1;
  s = _GetpItem(pObj, pObj->Sel);
  WM_GetClientRect(&r);
  GUI__ReduceRect(&r, &r, Border);
  InnerSize = r.y1 - r.y0 + 1;
  /* Draw the 3D effect (if configured) */
  WIDGET__EFFECT_DrawDown(&pObj->Widget);
  /* Draw the outer text frames */
  r.x1 -= InnerSize;     /* Spare square area to the right */
  LCD_SetColor(pObj->Props.aBackColor[ColorIndex]);
  /* Draw the text */
  LCD_SetBkColor(pObj->Props.aBackColor[ColorIndex]);
  GUI_FillRectEx(&r);
  r.x0 += TextBorderSize;
  r.x1 -= TextBorderSize;
  LCD_SetColor  (pObj->Props.aTextColor[ColorIndex]);
  GUI_DispStringInRect(s, &r, pObj->Props.Align);
  /* Draw arrow */
  WM_GetClientRect(&r);
  GUI__ReduceRect(&r, &r, Border);
  r.x0 = r.x1 + 1 - InnerSize;
  LCD_SetColor(pObj->Props.aColor[DROPDOWN_CI_BUTTON]);
  GUI_FillRectEx(&r);
  LCD_SetColor(pObj->Props.aColor[DROPDOWN_CI_ARROW]);
  _DrawTriangleDown((r.x1 + r.x0) / 2, r.y0 + 5, (r.y1 - r.y0 - 8) / 2);
  WIDGET__EFFECT_DrawUpRect(&pObj->Widget, &r);
}

/*********************************************************************
*
*       _OnTouch
*/
static int _OnTouch(DROPDOWN_Handle hObj, WM_MESSAGE*pMsg) {
  const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p;
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      WM_NotifyParent(hObj, WM_NOTIFICATION_CLICKED);
    } else {
      WM_NotifyParent(hObj, WM_NOTIFICATION_RELEASED);
    }
  } else {     /* Mouse moved out */
    WM_NotifyParent(hObj, WM_NOTIFICATION_MOVED_OUT);
  }
  return 0; /* Message handled */
}

/*********************************************************************
*
*       Private routines
*
**********************************************************************
*/
/*********************************************************************
*
*       DROPDOWN_h2p
*/
#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
DROPDOWN_Obj * DROPDOWN_h2p(DROPDOWN_Handle h) {
  DROPDOWN_Obj * p = (DROPDOWN_Obj *)GUI_ALLOC_h2p(h);
  if (p) {
    if (p->DebugId != DROPDOWN_ID) {
      GUI_DEBUG_ERROROUT("DROPDOWN.c: Wrong handle type or Object not init'ed");
      return 0;
    }
  }
  return p;
}
#endif

/*********************************************************************
*
*       DROPDOWN__AdjustHeight
*/
void DROPDOWN__AdjustHeight(DROPDOWN_Handle hObj, DROPDOWN_Obj* pObj) {
  int Height;
  Height = pObj->TextHeight;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱码一区二区三区| 亚洲国产精品久久人人爱| 91精品国产福利在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品国模大尺度视频| 日韩欧美一级精品久久| 日韩欧美国产午夜精品| 欧美一区二区三级| 久久精品99久久久| 亚洲成人先锋电影| 一二三四社区欧美黄| 亚洲自拍偷拍网站| 国产麻豆日韩欧美久久| 天天色综合成人网| 九九精品一区二区| 99国产精品99久久久久久| 色婷婷综合五月| 日韩免费在线观看| 中文字幕欧美日本乱码一线二线| ...av二区三区久久精品| 日韩中文字幕亚洲一区二区va在线| 视频一区二区三区入口| 国产盗摄女厕一区二区三区| 欧美性xxxxx极品少妇| 欧美精品一区二区三区一线天视频 | 久久久久久久久岛国免费| 一区二区激情视频| 国产精品亚洲一区二区三区妖精| 欧美丝袜自拍制服另类| 久久久国产精品午夜一区ai换脸| 亚洲不卡av一区二区三区| 粉嫩在线一区二区三区视频| 欧美一区二区三区四区久久| 亚洲色大成网站www久久九九| 精品影院一区二区久久久| 欧美久久久久久久久| 一区二区三区在线视频播放| 成人av手机在线观看| 久久麻豆一区二区| 麻豆精品精品国产自在97香蕉 | 欧美不卡123| 久久精品99国产精品| 91麻豆精品国产91久久久使用方法 | 日韩一区二区影院| 视频在线观看国产精品| 欧美日韩另类一区| 日韩精品午夜视频| 日韩亚洲欧美一区二区三区| 日韩一区精品视频| 欧美变态tickle挠乳网站| 国产一区二区免费看| 国产亚洲欧美一级| jizz一区二区| 亚洲国产一区视频| 精品剧情在线观看| jlzzjlzz亚洲女人18| 亚洲一区电影777| 91精品欧美一区二区三区综合在| 免费看日韩a级影片| 国产亚洲福利社区一区| 99久久综合精品| 婷婷成人激情在线网| 日本一区二区视频在线| 色香色香欲天天天影视综合网| 亚洲18色成人| 国产欧美一区二区三区网站| 欧美日韩一卡二卡三卡| 成人蜜臀av电影| 日韩欧美国产高清| 国产一区二区三区四区在线观看| 欧美国产日韩亚洲一区| 91精品啪在线观看国产60岁| 不卡电影一区二区三区| 久久91精品国产91久久小草 | 精品一区二区三区香蕉蜜桃| 国产亚洲美州欧州综合国| 欧美日韩国产精品自在自线| 国产suv精品一区二区883| 婷婷久久综合九色综合伊人色| 国产精品日韩精品欧美在线 | 综合电影一区二区三区 | 一区二区三区小说| 亚洲婷婷综合色高清在线| 国产视频一区二区三区在线观看| 欧美一区二区在线免费观看| 欧美制服丝袜第一页| 不卡在线观看av| 国产精品一区专区| 国产成人在线视频网址| 国产又黄又大久久| 加勒比av一区二区| 国产综合久久久久久鬼色| 日韩精品欧美精品| 蜜臀91精品一区二区三区 | www.av亚洲| 99久久综合狠狠综合久久| 一本久久综合亚洲鲁鲁五月天| 9久草视频在线视频精品| 色屁屁一区二区| 欧美日韩电影在线| 久久先锋资源网| 中文字幕一区在线| 亚洲高清视频在线| 国产一区二区三区久久悠悠色av| 国产成人综合精品三级| 色综合色综合色综合色综合色综合 | 亚洲综合精品久久| 美女视频第一区二区三区免费观看网站| 男女男精品视频| 成人免费高清在线观看| 欧美丝袜第三区| 精品三级av在线| 亚洲欧美日本韩国| 久久国产人妖系列| 一本大道av一区二区在线播放| 日韩欧美在线1卡| 亚洲欧美色一区| 国产白丝精品91爽爽久久| 欧美日本免费一区二区三区| 国产精品人妖ts系列视频| 秋霞av亚洲一区二区三| 国产高清在线精品| 88在线观看91蜜桃国自产| 一区二区三区精品| 成人av电影免费在线播放| 日韩亚洲欧美在线| 图片区日韩欧美亚洲| 91麻豆国产在线观看| 国产精品女同一区二区三区| 久久99九九99精品| 日韩欧美的一区| 免费一区二区视频| 日韩免费电影一区| 一区二区三区四区av| 亚洲激情欧美激情| 狠狠色丁香久久婷婷综合_中| 日韩一区二区三区免费看| 奇米精品一区二区三区四区| 欧美日韩国产成人在线91| 无吗不卡中文字幕| 日韩精品一区二区在线观看| 看片网站欧美日韩| 久久久蜜桃精品| 色综合久久88色综合天天免费| 亚洲视频免费看| 欧洲一区二区av| 日韩精品三区四区| 国产亚洲自拍一区| 欧美综合亚洲图片综合区| 午夜精品在线视频一区| 日韩欧美国产wwwww| jizz一区二区| 美女国产一区二区三区| 中文字幕亚洲不卡| 91精品国产高清一区二区三区 | 不卡一区二区中文字幕| 亚洲黄网站在线观看| 精品久久久久久无| 欧美天天综合网| 国产一区999| 午夜精品久久一牛影视| 久久精品一区二区三区不卡牛牛 | 精品国产91久久久久久久妲己| 99精品久久99久久久久| 另类综合日韩欧美亚洲| 一区二区三区成人| 国产精品欧美精品| 国产欧美一区二区三区沐欲| 欧美一级免费观看| 色噜噜狠狠色综合中国| 国产精品主播直播| 久久精品国产第一区二区三区| 亚洲一区自拍偷拍| 亚洲激情av在线| 一片黄亚洲嫩模| 亚洲精品国产无套在线观| 亚洲欧美一区二区三区国产精品| 久久久久9999亚洲精品| 国产欧美日韩不卡免费| 日本一区二区在线不卡| 中文字幕国产一区| 中文字幕一区二区5566日韩| 欧美国产视频在线| 亚洲日本在线天堂| 一区二区三区成人| 日韩激情视频网站| 另类小说欧美激情| 成人免费视频app| 91免费在线看| 欧美一区二区高清| 国产精品久久久久久久久免费樱桃| 日韩毛片视频在线看| 五月天一区二区| 日本麻豆一区二区三区视频| 在线免费观看日韩欧美| 51精品久久久久久久蜜臀| 日韩欧美精品在线| 56国语精品自产拍在线观看| 久久先锋影音av鲁色资源网| 看电影不卡的网站|