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

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

?? checkbox.c

?? 使用coderwarrior打開 內含中文字庫
?? 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        : CHECKBOX.c
Purpose     : Template for new emWin GSC widgets
---------------------------END-OF-HEADER------------------------------
*/

#include <stdlib.h>
#include <string.h>
#include "GUI_Private.h"
#include "CHECKBOX.h"
#include "Widget.h"

#if GUI_WINSUPPORT

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

/* Define default fonts */
#ifndef CHECKBOX_FONT_DEFAULT
  #define CHECKBOX_FONT_DEFAULT &GUI_Font13_1
#endif

/* Support for 3D effects */
#ifndef CHECKBOX_USE_3D
  #define CHECKBOX_USE_3D 1
#endif

/* Define colors */
#ifndef CHECKBOX_BKCOLOR0_DEFAULT
  #define CHECKBOX_BKCOLOR0_DEFAULT 0x808080           /* Inactive color */
#endif

#ifndef CHECKBOX_BKCOLOR1_DEFAULT
  #define CHECKBOX_BKCOLOR1_DEFAULT GUI_WHITE          /* Active color */
#endif

#ifndef CHECKBOX_FGCOLOR0_DEFAULT
  #define CHECKBOX_FGCOLOR0_DEFAULT 0x101010
#endif

#ifndef CHECKBOX_FGCOLOR1_DEFAULT
  #define CHECKBOX_FGCOLOR1_DEFAULT GUI_BLACK
#endif


/*********************************************************************
*
*       Object definition
*
**********************************************************************
*/

typedef struct {
  WIDGET Widget;
  GUI_COLOR aBkColor[2];
  GUI_COLOR aFgColor[2];
  #if GUI_DEBUG_LEVEL >1
    int DebugId;
  #endif  
} CHECKBOX_Obj;

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

static GUI_COLOR _aColor[2];

/*********************************************************************
*
*       Static const data
*
**********************************************************************
*/
static const GUI_LOGPALETTE _PalCheck = {
  2,	/* number of entries */
  0, 	/* No transparency */
  &_aColor[0]
};

static const unsigned char _acCheck[] = {
  XXXXXXXX, XXX_____,
  XXXXXXXX, XXX_____,
  XXXXXXXX, _XX_____,
  XXXXXXX_, _XX_____,
  XX_XXX__, _XX_____,
  XX__X___, XXX_____,
  XX_____X, XXX_____,
  XXX___XX, XXX_____,
  XXXX_XXX, XXX_____,
  XXXXXXXX, XXX_____,
  XXXXXXXX, XXX_____
};

static const GUI_BITMAP _bmCheck = {
 11, /* XSize */
 11, /* YSize */
 2, /* BytesPerLine */
 1, /* BitsPerPixel */
 _acCheck,  /* Pointer to picture data (indices) */
 &_PalCheck  /* Pointer to palette */
};

/*********************************************************************
*
*       Macros for internal use
*
**********************************************************************
*/

#define CHECKBOX_ID 0x4544   /* Magic numer, should be unique if possible */

#define CHECKBOX_H2P(h) (CHECKBOX_Obj*) WM_H2P(h)

#ifdef _DEBUG
  #define CHECKBOX_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != CHECKBOX_ID, "xxx.c: Wrong handle type or Object not init'ed")
  #define CHECKBOX_INIT_ID(p)   p->DebugId = CHECKBOX_ID
  #define CHECKBOX_DEINIT_ID(p) p->DebugId = CHECKBOX_ID+1
#else
  #define CHECKBOX_ASSERT_IS_VALID_PTR(p)
  #define CHECKBOX_INIT_ID(p)
  #define CHECKBOX_DEINIT_ID(p)
#endif

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



/*********************************************************************
*
*       _Paint
*/
static void _Paint(CHECKBOX_Obj* pObj) {
  int ColorIndex;
  ColorIndex = WIDGET__IsEnabled(&pObj->Widget);
  /* Clear inside  ... Just in case */
  GUI_SetBkColor (pObj->aBkColor[ColorIndex]);
  GUI_Clear();
  if (pObj->Widget.State & CHECKBOX_STATE_CHECKED) {
    _aColor[1] = pObj->aBkColor[ColorIndex];
    _aColor[0] = pObj->aFgColor[ColorIndex];
    GUI_DrawBitmap(&_bmCheck, 2, 2);
  }
  /* Draw the 3D effect (if configured) */
  WIDGET__EFFECT_DrawDown(&pObj->Widget);
}


/*********************************************************************
*
*       _OnTouch
*/
static void _OnTouch(CHECKBOX_Handle hObj, CHECKBOX_Obj* pObj, WM_MESSAGE*pMsg) {
  int Notification;
  int Hit = 0;
  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      if (pObj->Widget.State & WIDGET_STATE_ENABLED) {
        pObj->Widget.State ^= CHECKBOX_STATE_CHECKED;
        WM_Invalidate(hObj);
        Notification = WM_NOTIFICATION_CLICKED;
        WM_SetFocus(hObj);
      }
    } else {
      Hit =1;
      Notification = WM_NOTIFICATION_RELEASED;
    }
  } else {
    Notification = WM_NOTIFICATION_MOVED_OUT;
  }
  WM_NotifyParent(hObj, Notification);
  if (Hit == 1) {
    GUI_DEBUG_LOG("CHECKBOX: Hit\n");
    GUI_StoreKey(pObj->Widget.Id);
  }
}

/*********************************************************************
*
*       _Callback
*/
static void _CHECKBOX_Callback (WM_MESSAGE *pMsg) {
  CHECKBOX_Handle hObj;
  CHECKBOX_Obj* pObj;
  hObj = pMsg->hWin;
  pObj = CHECKBOX_H2P(hObj);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_PAINT:
    GUI_DEBUG_LOG("CHECKBOX: _Callback(WM_PAINT)\n");
    _Paint(pObj);
    return;
  case WM_TOUCH:
    _OnTouch(hObj, pObj, pMsg);
    break;
  }
  WM_DefaultProc(pMsg);
}

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

/* Note: the parameters to a create function may vary.
         Some widgets may have multiple create functions */


CHECKBOX_Handle CHECKBOX_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags) {
  CHECKBOX_Handle hObj;
  /* Create the window */
  WM_LOCK();
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent,
                                Flags, _CHECKBOX_Callback, sizeof(CHECKBOX_Obj)-sizeof(WM_Obj));
  if (hObj) {
    CHECKBOX_Obj* pObj = CHECKBOX_H2P(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED);
    pObj->Widget.Id     = Id;
    /* init member variables */
    CHECKBOX_INIT_ID(pObj);
    pObj->aBkColor[0]   = CHECKBOX_BKCOLOR0_DEFAULT;
    pObj->aBkColor[1]   = CHECKBOX_BKCOLOR1_DEFAULT;
    pObj->aFgColor[0]   = CHECKBOX_FGCOLOR0_DEFAULT;
    pObj->aFgColor[1]   = CHECKBOX_FGCOLOR1_DEFAULT;
  } else {
    GUI_DEBUG_ERROROUT_IF(hObj==0, "CHECKBOX_Create failed")
  }
  WM_UNLOCK();
  return hObj;
}

CHECKBOX_Handle CHECKBOX_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) {
  CHECKBOX_Handle  hThis;
  GUI_USE_PARA(cb);
  hThis = CHECKBOX_Create(pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, 15, 15,
                          hWinParent, pCreateInfo->Id, pCreateInfo->Flags);
  return hThis;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/
void CHECKBOX_Check(CHECKBOX_Handle hObj) {
  WIDGET_OrState(hObj, CHECKBOX_STATE_CHECKED);
}

void CHECKBOX_Uncheck(CHECKBOX_Handle hObj) {
  WIDGET_AndState(hObj, CHECKBOX_STATE_CHECKED);
}

/*********************************************************************
*
*       Exported routines:  Query state
*
**********************************************************************
*/

/*********************************************************************
*
*       CHECKBOX_IsChecked
*/
int CHECKBOX_IsChecked(CHECKBOX_Handle hObj) {
  int r = 0;
  CHECKBOX_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = CHECKBOX_H2P(hObj);
    r = (pObj->Widget.State & CHECKBOX_STATE_CHECKED) ? 1 : 0;
    WM_UNLOCK();
  }
  return r;
}



#endif  /* #if GUI_WINSUPPORT */



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三| 日韩视频一区二区三区在线播放| 国产女人18毛片水真多成人如厕| 国产福利一区二区| 国产精品理论在线观看| 色综合天天天天做夜夜夜夜做| 亚洲麻豆国产自偷在线| 欧洲一区在线电影| 日本中文字幕不卡| 精品剧情在线观看| 成人动漫视频在线| 一区二区国产盗摄色噜噜| 91精品国产丝袜白色高跟鞋| 激情欧美日韩一区二区| 日韩理论在线观看| 91精品婷婷国产综合久久性色 | 日韩丝袜情趣美女图片| 国产一区二区三区久久久| 中文字幕中文在线不卡住| 欧美影片第一页| 激情图片小说一区| 一区二区三区蜜桃| 2023国产一二三区日本精品2022| 99久久精品免费看国产免费软件| 婷婷综合五月天| 国产欧美日韩在线| 7777精品伊人久久久大香线蕉完整版 | 日韩精品一区二区三区视频在线观看| 国产精品白丝jk白祙喷水网站| 综合久久国产九一剧情麻豆| 欧美日韩一区二区三区四区 | 日韩午夜在线播放| aa级大片欧美| 久久精品国产99国产| 中文字幕一区二区三区在线不卡| 欧美日高清视频| 国产·精品毛片| 日本欧美在线看| 亚洲欧美色图小说| 亚洲黄网站在线观看| 日韩视频一区二区在线观看| 一本大道综合伊人精品热热 | 亚洲视频一二区| 精品成人佐山爱一区二区| 欧美日韩一区国产| 成人国产一区二区三区精品| 久久精品av麻豆的观看方式| 樱花草国产18久久久久| 中文字幕高清不卡| 久久久久久一二三区| 欧美伦理电影网| 在线观看网站黄不卡| 成人免费视频app| 黄色成人免费在线| 喷白浆一区二区| 亚洲永久免费视频| 中文字幕在线不卡一区 | 91精品国产综合久久福利| 91香蕉视频污在线| 91原创在线视频| 粉嫩高潮美女一区二区三区| 国内精品国产成人| 极品销魂美女一区二区三区| 日韩国产欧美三级| 日韩中文欧美在线| 日韩极品在线观看| 五月综合激情日本mⅴ| 夜夜嗨av一区二区三区四季av| 国产精品久久久久一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 精品国产sm最大网站| 久久亚洲欧美国产精品乐播| 欧美大黄免费观看| 日韩免费一区二区三区在线播放| 欧美一级二级在线观看| 337p亚洲精品色噜噜| 欧美人与禽zozo性伦| 欧美片网站yy| 91精品国产91综合久久蜜臀| 日韩欧美一区二区三区在线| 欧美一区欧美二区| 欧美电视剧在线看免费| 精品精品国产高清a毛片牛牛| 精品国产成人系列| 国产亚洲制服色| 亚洲va欧美va国产va天堂影院| 亚洲妇女屁股眼交7| 日韩黄色免费网站| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品18久久久| 色婷婷精品大在线视频| 欧美日韩另类一区| 日韩一级片网站| 久久久久久久久99精品| 国产精品久久久久久久久图文区| 亚洲精品日产精品乱码不卡| 亚洲国产色一区| 精品一区二区精品| 成人97人人超碰人人99| 欧洲中文字幕精品| 日韩精品一区国产麻豆| 中文字幕高清不卡| 亚洲高清视频在线| 国产乱子伦视频一区二区三区| 99精品黄色片免费大全| 91精品国产综合久久香蕉的特点| 日韩免费一区二区| 亚洲色大成网站www久久九九| 亚洲国产精品自拍| 国产酒店精品激情| 欧美综合久久久| 26uuu国产电影一区二区| 亚洲欧美另类久久久精品2019| 丝袜亚洲另类欧美综合| 国产1区2区3区精品美女| 欧美日韩国产精品自在自线| 国产视频一区在线观看| 亚洲国产视频直播| 国产suv精品一区二区6| 精品视频一区 二区 三区| 国产日韩欧美不卡| 天天色综合天天| www.成人网.com| 日韩欧美一卡二卡| 亚洲一区二区三区激情| 国产91高潮流白浆在线麻豆| 日韩一区二区三区电影在线观看 | 日本高清不卡aⅴ免费网站| 精品欧美一区二区在线观看| 亚洲激情第一区| 成人免费视频app| 精品日产卡一卡二卡麻豆| 一区二区三区在线观看视频| 国产成人免费视频精品含羞草妖精 | www国产精品av| 午夜av一区二区三区| 制服丝袜亚洲网站| 国产精品天美传媒| 久久精品国产久精国产爱| 欧美日韩国产美女| 亚洲精品你懂的| 91在线国产福利| 中文字幕第一页久久| 国产精品一二三在| 日韩免费高清电影| 日韩一区欧美二区| 欧美在线观看视频一区二区三区| 国产精品久久久久久久久久久免费看 | 不卡一区二区中文字幕| 精品剧情v国产在线观看在线| 亚州成人在线电影| 91捆绑美女网站| 成人欧美一区二区三区在线播放| 国产精品99久| 久久久午夜精品| 国产美女主播视频一区| www久久精品| 国产一区二区网址| 精品久久久久久久久久久久久久久 | 日韩一区二区三区免费观看| 一区二区三区视频在线看| bt7086福利一区国产| 中文字幕人成不卡一区| 99re这里都是精品| 综合激情网...| 91福利精品视频| 亚洲综合激情网| 欧美日韩国产美女| 日本亚洲最大的色成网站www| 欧美日韩视频一区二区| 天天亚洲美女在线视频| 欧美一区二区视频网站| 久久黄色级2电影| 久久精品欧美日韩| 成人18视频在线播放| 亚洲精品第一国产综合野| 欧美午夜精品一区| 亚洲成a人片在线不卡一二三区 | 91婷婷韩国欧美一区二区| 中文字幕一区二区三区色视频| 波多野结衣在线一区| 美女一区二区视频| 久久久久久黄色| 成人av高清在线| 亚洲黄色录像片| 欧美日韩国产美女| 蜜桃视频在线观看一区| 国产午夜精品在线观看| 99久久综合99久久综合网站| 亚洲自拍欧美精品| 欧美videos大乳护士334| 国产黄色精品网站| 一级精品视频在线观看宜春院| 欧美精品v日韩精品v韩国精品v| 美女在线视频一区| 国产精品素人一区二区| 欧美日韩国产一二三| 国产精品自拍毛片| 亚洲另类在线视频| 日韩写真欧美这视频|