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

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

?? widget_listboxownerdraw.c

?? 圖像系統(tǒng)uc_GUI
?? C
字號:
/*
*********************************************************************************************************
*                                             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        : WIDGET_ListBoxOwnerDraw.c
Purpose     : Demonstrates a owner drawn list box
----------------------------------------------------------------------
*/

#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"

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

static int _MultiSel;
static int _OwnerDrawn;
static int _VarY = 1;
static int _PrevTime;

/*********************************************************************
*
*       Bitmap data for user drawn list box
*/
const GUI_COLOR ColorsSmilie0[] = {
     0xFFFFFF,0x000000,0x0000FF
};

const GUI_COLOR ColorsSmilie1[] = {
     0xFFFFFF,0x000000,0x00FFFF
};

const GUI_LOGPALETTE PalSmilie0 = {
  3,	/* number of entries */
  1, 	/* Has transparency */
  &ColorsSmilie0[0]
};

const GUI_LOGPALETTE PalSmilie1 = {
  3,	/* number of entries */
  1, 	/* Has transparency */
  &ColorsSmilie1[0]
};

const unsigned char acSmilie0[] = {
  0x00, 0x55, 0x40, 0x00,
  0x01, 0xAA, 0x90, 0x00,
  0x06, 0xAA, 0xA4, 0x00,
  0x19, 0x6A, 0x59, 0x00,
  0x69, 0x6A, 0x5A, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xAA, 0xAA, 0x40,
  0x1A, 0x95, 0xA9, 0x00,
  0x06, 0x6A, 0x64, 0x00,
  0x01, 0xAA, 0x90, 0x00,
  0x00, 0x55, 0x40, 0x00
};

const unsigned char acSmilie1[] = {
  0x00, 0x55, 0x40, 0x00,
  0x01, 0xAA, 0x90, 0x00,
  0x06, 0xAA, 0xA4, 0x00,
  0x19, 0x6A, 0x59, 0x00,
  0x69, 0x6A, 0x5A, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xA6, 0xAA, 0x40,
  0x6A, 0xAA, 0xAA, 0x40,
  0x1A, 0x6A, 0x69, 0x00,
  0x06, 0x95, 0xA4, 0x00,
  0x01, 0xAA, 0x90, 0x00,
  0x00, 0x55, 0x40, 0x00
};

const GUI_BITMAP bmSmilie0 = {
 13, /* XSize */
 13, /* YSize */
 4,  /* BytesPerLine */
 2,  /* BitsPerPixel */
 acSmilie0,   /* Pointer to picture data (indices) */
 &PalSmilie0  /* Pointer to palette */
};

const GUI_BITMAP bmSmilie1 = {
 13, /* XSize */
 13, /* YSize */
 4,  /* BytesPerLine */
 2,  /* BitsPerPixel */
 acSmilie1,   /* Pointer to picture data (indices) */
 &PalSmilie1  /* Pointer to palette */
};

/*********************************************************************
*
*       Default contents of list box
*/
static const GUI_ConstString _ListBox[] = {
  "English", "Deutsch", NULL
};

/*********************************************************************
*
*       Dialog resource
*
* This table conatins the info required to create the dialog.
* It has been created manually, but could also be created by a GUI-builder.
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect,  "Owner drawn list box",    0,                  50,  50, 220, 140, FRAMEWIN_CF_MOVEABLE },
  { LISTBOX_CreateIndirect,   0,                         GUI_ID_MULTIEDIT0,  10,  10, 100, 100, 0, 100 },
/* Check box for multi select mode */
  { CHECKBOX_CreateIndirect,  0,                         GUI_ID_CHECK0,     120,  10,   0,   0 },
  { TEXT_CreateIndirect,      "Multi select",            0,                 140,  10,  80,  15, TEXT_CF_LEFT },
/* Check box for owner drawn list box */
  { CHECKBOX_CreateIndirect,  0,                         GUI_ID_CHECK1,     120,  35,   0,   0 },
  { TEXT_CreateIndirect,      "Owner drawn",              0,                140,  35,  80,  15, TEXT_CF_LEFT },
/* Buttons */
  { BUTTON_CreateIndirect,    "OK",                      GUI_ID_OK,         120,  65,  80,  20 },
  { BUTTON_CreateIndirect,    "Cancel",                  GUI_ID_CANCEL,     120,  90,  80,  20 },
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
/*********************************************************************
*
*       _cbBkWindow
*/
static void _cbBkWindow(WM_MESSAGE* pMsg) {
  switch (pMsg->MsgId) {
  case WM_PAINT:
    GUI_SetBkColor(GUI_RED);
    GUI_Clear();
    GUI_SetColor(GUI_WHITE);
    GUI_SetFont(&GUI_Font24_ASCII);
    GUI_DispStringHCenterAt("WIDGET_ListBoxOwnerDraw", 160, 5);
    break;
  default:
    WM_DefaultProc(pMsg);
  }
}

/*********************************************************************
*
*       _GetItemSizeX
*/
static int _GetItemSizeX(WM_HWIN hWin, int ItemIndex) {
  char acBuffer[100];
  int  DistX;
  LISTBOX_GetItemText(hWin, ItemIndex, acBuffer, sizeof(acBuffer));
  DistX = GUI_GetStringDistX(acBuffer);
  return DistX + bmSmilie0.XSize + 16;
}

/*********************************************************************
*
*       _GetItemSizeY
*/
static int _GetItemSizeY(WM_HWIN hWin, int ItemIndex) {
  int DistY;
  DistY = GUI_GetFontDistY() + 1;
  if (LISTBOX_GetMulti(hWin)) {
    if (LISTBOX_GetItemSel(hWin, ItemIndex)) {
      DistY += 8;
    }
  } else if (LISTBOX_GetSel(hWin) == ItemIndex) {
    DistY += 8;
  }
  return DistY;
}

/*********************************************************************
*
*       _OwnerDraw
*
* Purpose:
*   This is the owner draw function.
*   It allows complete customization of how the items in the listbox are
*   drawn. A command specifies what the function should do;
*   The minimum is to react to the draw command (WIDGET_ITEM_DRAW);
*   If the item x-size differs from the default, then this information
*   needs to be returned in reaction to WIDGET_ITEM_GET_XSIZE.
*   To insure compatibility with future version, all unhandled commands
*   must call the default routine LISTBOX_OwnerDraw.
*/
static int _OwnerDraw(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
  WM_HWIN hWin;
  int Index;
  hWin     = pDrawItemInfo->hWin;
  Index    = pDrawItemInfo->ItemIndex;
  switch (pDrawItemInfo->Cmd) {
  case WIDGET_ITEM_GET_XSIZE:
    return _GetItemSizeX(hWin, Index);
  case WIDGET_ITEM_GET_YSIZE:
    return _GetItemSizeY(hWin, Index);
  case WIDGET_ITEM_DRAW:
    {
      int MultiSel, Sel, YSize, FontDistY;
      int IsDisabled, IsSelected;
      int ColorIndex = 0;
      char acBuffer[100];
      const GUI_BITMAP * pBm;
      const GUI_FONT* pOldFont = 0;
      GUI_COLOR aColor[4] = {GUI_BLACK, GUI_WHITE, GUI_WHITE, GUI_GRAY};
      GUI_COLOR aBkColor[4] = {GUI_WHITE, GUI_GRAY, GUI_BLUE, 0xC0C0C0};
      IsDisabled = LISTBOX_GetItemDisabled(pDrawItemInfo->hWin, pDrawItemInfo->ItemIndex);
      IsSelected = LISTBOX_GetItemSel(hWin, Index);
      MultiSel   = LISTBOX_GetMulti(hWin);
      Sel        = LISTBOX_GetSel(hWin);
      YSize      = _GetItemSizeY(hWin, Index);
      /* Calculate color index */
      if (MultiSel) {
        if (IsDisabled) {
          ColorIndex = 3;
        } else {
          ColorIndex = (IsSelected) ? 2 : 0;
        }
      } else {
        if (IsDisabled) {
          ColorIndex = 3;
        } else {
          if (pDrawItemInfo->ItemIndex == Sel) {
            ColorIndex = WM_HasFocus(pDrawItemInfo->hWin) ? 2 : 1;
          } else {
            ColorIndex = 0;
          }
        }
      }
      /* Draw item */
      GUI_SetBkColor(aBkColor[ColorIndex]);
      GUI_SetColor  (aColor[ColorIndex]);
      LISTBOX_GetItemText(pDrawItemInfo->hWin, pDrawItemInfo->ItemIndex, acBuffer, sizeof(acBuffer));
      GUI_Clear();
      if ((ColorIndex == 1) || (ColorIndex == 2)) {
        pOldFont = GUI_SetFont(&GUI_Font13B_1);
      }
      FontDistY  = GUI_GetFontDistY();
      GUI_DispStringAt(acBuffer, pDrawItemInfo->x0 + bmSmilie0.XSize + 16, pDrawItemInfo->y0 + (YSize - FontDistY) / 2);
      if (pOldFont) {
        GUI_SetFont(pOldFont);
      }
      GUI_DispCEOL();
      /* Draw bitmap */
      pBm = MultiSel ? IsSelected ? &bmSmilie1 : &bmSmilie0 : (pDrawItemInfo->ItemIndex == Sel) ? &bmSmilie1 : &bmSmilie0;
      GUI_DrawBitmap(pBm, pDrawItemInfo->x0 + 7, pDrawItemInfo->y0 + (YSize - pBm->YSize) / 2);
      /* Draw focus rectangle */
      if (MultiSel && (pDrawItemInfo->ItemIndex == Sel)) {
        GUI_RECT rFocus;
        GUI_RECT rInside;
        WM_GetInsideRectEx(pDrawItemInfo->hWin, &rInside);
        rFocus.x0 = pDrawItemInfo->x0;
        rFocus.y0 = pDrawItemInfo->y0;
        rFocus.x1 = rInside.x1;
        rFocus.y1 = pDrawItemInfo->y0 + YSize - 1;
        GUI_SetColor(GUI_WHITE - aBkColor[ColorIndex]);
        GUI_DrawFocusRect(&rFocus, 0);
      }
    }
    break;
  default:
    return LISTBOX_OwnerDraw(pDrawItemInfo);
  }
  return 0;
}

/*********************************************************************
*
*       _cbCallback
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
  int NCode, Id;
  WM_HWIN hDlg, hListBox, hItem;
  hDlg = pMsg->hWin;
  hListBox = WM_GetDialogItem(hDlg, GUI_ID_MULTIEDIT0);
  switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:
      LISTBOX_SetText(hListBox, _ListBox);
      LISTBOX_AddString(hListBox, "Fran鏰is");
      LISTBOX_AddString(hListBox, "Japanese");
      LISTBOX_AddString(hListBox, "Italiano");
      LISTBOX_AddString(hListBox, "Espa駉l");
      LISTBOX_AddString(hListBox, "Greek");
      LISTBOX_AddString(hListBox, "Hebrew");
      LISTBOX_AddString(hListBox, "Dutch");
      LISTBOX_AddString(hListBox, "Other language ...");
      LISTBOX_SetScrollStepH(hListBox, 6);
      LISTBOX_SetAutoScrollH(hListBox, 1);
      LISTBOX_SetAutoScrollV(hListBox, 1);
      LISTBOX_SetOwnerDraw(hListBox, _OwnerDraw);
      hItem  = WM_GetDialogItem(hDlg, GUI_ID_CHECK1);
      CHECKBOX_Check(hItem);
      break;
    case WM_KEY:
      switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
        case GUI_KEY_ESCAPE:
          GUI_EndDialog(hDlg, 1);
          break;
        case GUI_KEY_ENTER:
          GUI_EndDialog(hDlg, 0);
          break;
      }
      break;
    case WM_TOUCH_CHILD:
      WM_SetFocus(hListBox);
      break;
    case WM_NOTIFY_PARENT:
      Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
      NCode = pMsg->Data.v;                 /* Notification code */
      hItem  = WM_GetDialogItem(hDlg, Id);
      switch (NCode) {
        case WM_NOTIFICATION_SEL_CHANGED:
          LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS);
          break;
        case WM_NOTIFICATION_RELEASED:      /* React only if released */
          switch (Id) {
            case GUI_ID_OK:
              GUI_EndDialog(hDlg, 0);
              break;
            case GUI_ID_CANCEL:
              GUI_EndDialog(hDlg, 1);
              break;
            case GUI_ID_CHECK0:
              _MultiSel ^= 1;
              LISTBOX_SetMulti(hListBox, _MultiSel);
              WM_SetFocus(hListBox);
              LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS);
              break;
            case GUI_ID_CHECK1:
              _OwnerDrawn ^= 1;
              if (_OwnerDrawn) {
                LISTBOX_SetOwnerDraw(hListBox, _OwnerDraw);
              } else {
                LISTBOX_SetOwnerDraw(hListBox, NULL);
              }
              LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS);
              break;
          }
          break;
      }
      break;
    default:
      WM_DefaultProc(pMsg);
  }
}

/*********************************************************************
*
*       MainTask
*
*       Demonstrates a owner drawn list box
*
**********************************************************************
*/

void MainTask(void) {
  GUI_Init();
  WM_SetCallback(WM_HBKWIN, &_cbBkWindow);
  WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
  while (1) {
    _MultiSel   = 0;
    _OwnerDrawn = 1;
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
    GUI_Delay(1000);
  }
}
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91浏览器入口在线观看| 色综合天天综合色综合av| 亚洲精品欧美二区三区中文字幕| 欧美大尺度电影在线| 欧美一区二区精品在线| 5566中文字幕一区二区电影| 91精品国产欧美一区二区成人| 欧美日韩一本到| 精品视频在线免费观看| 欧美另类videos死尸| 4438亚洲最大| 欧美mv日韩mv| 亚洲国产精品精华液2区45| 国产精品全国免费观看高清| 最新高清无码专区| 亚洲国产成人高清精品| 五月天激情综合网| 日本不卡123| 国产91精品一区二区麻豆亚洲| 成人爽a毛片一区二区免费| 91麻豆精东视频| 欧美午夜一区二区三区| 欧美变态tickling挠脚心| 国产亚洲欧美在线| 亚洲蜜桃精久久久久久久| 午夜久久久影院| 国产精品一区久久久久| 91在线云播放| 日韩欧美国产综合| 亚洲欧洲日韩在线| 视频一区二区不卡| 成人免费视频一区| 欧美一区二区日韩一区二区| 国产日产欧美一区二区三区| 亚洲小说春色综合另类电影| 激情综合网最新| 色婷婷综合久色| 精品国产伦一区二区三区观看方式| 亚洲国产激情av| 婷婷六月综合网| va亚洲va日韩不卡在线观看| 欧美精品亚洲二区| 国产精品二区一区二区aⅴ污介绍| 亚洲成人综合视频| 高清不卡在线观看av| 91麻豆精品国产91久久久更新时间 | 自拍偷拍亚洲综合| 久久国产精品99精品国产| 91蜜桃传媒精品久久久一区二区| 欧美一级高清大全免费观看| 亚洲三级电影网站| 国产高清精品网站| 欧美成人福利视频| 亚洲成人免费影院| 99国产精品久久久久| www激情久久| 日本成人在线视频网站| 在线免费观看日本欧美| 国产精品沙发午睡系列990531| 青青草原综合久久大伊人精品 | 在线观看国产精品网站| 中文字幕成人av| 久久99久久99精品免视看婷婷| 欧美亚洲国产一区在线观看网站 | 欧洲亚洲国产日韩| 一区在线播放视频| 成人免费视频app| 国产欧美日本一区二区三区| 精品一区二区三区免费播放| 欧美videossexotv100| 午夜日韩在线电影| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产精品av| 国产福利一区二区三区视频在线| 欧美电视剧在线观看完整版| 美女在线视频一区| 日韩视频一区二区三区在线播放 | 国产乱妇无码大片在线观看| 日韩欧美第一区| 久久99蜜桃精品| 欧美zozo另类异族| 国产精品中文欧美| 国产欧美一区二区精品性色 | 东方欧美亚洲色图在线| 国产精品无圣光一区二区| 成人丝袜高跟foot| 成人欧美一区二区三区1314 | 欧美夫妻性生活| 免费观看日韩av| 久久综合色一综合色88| 国产精品99久久久久久有的能看| 国产欧美一区二区精品婷婷| 99久久精品情趣| 一区二区三区欧美视频| 91精品国产综合久久久久久漫画 | 久久综合久久鬼色| 高清久久久久久| 亚洲国产裸拍裸体视频在线观看乱了 | 中文字幕在线视频一区| 91麻豆国产香蕉久久精品| 午夜精品久久久久久久99水蜜桃 | 91网址在线看| 水野朝阳av一区二区三区| 欧美精品一区二区精品网| 成人禁用看黄a在线| 亚洲成人激情社区| 久久综合色一综合色88| 色老综合老女人久久久| 激情五月婷婷综合网| 亚洲丝袜另类动漫二区| 日韩欧美中文字幕制服| 成人av影院在线| 日本va欧美va瓶| 亚洲欧洲综合另类| 欧美一区二区三区在线| 本田岬高潮一区二区三区| 香蕉影视欧美成人| 国产日韩欧美制服另类| 欧美裸体一区二区三区| jlzzjlzz欧美大全| 精品亚洲porn| 亚洲一区免费视频| 国产精品久久久久久久久免费樱桃| 欧美天天综合网| 成人一区二区视频| 另类小说视频一区二区| 一区二区免费在线| 中文成人av在线| 亚洲精品在线观看网站| 91精品福利在线一区二区三区| www.性欧美| 国产传媒久久文化传媒| 人禽交欧美网站| 亚洲观看高清完整版在线观看| 国产精品色噜噜| 国产性色一区二区| 2021中文字幕一区亚洲| 日韩午夜在线播放| 欧美丰满嫩嫩电影| 欧美日韩国产一级二级| 色琪琪一区二区三区亚洲区| 成人晚上爱看视频| 成人精品视频一区二区三区尤物| 久久福利视频一区二区| 视频一区二区中文字幕| 天堂成人国产精品一区| 亚洲午夜国产一区99re久久| 亚洲视频免费在线| 日韩久久一区二区| 亚洲欧美电影院| 亚洲欧美视频在线观看视频| 中文字幕在线视频一区| 亚洲欧美日韩人成在线播放| 亚洲特级片在线| 亚洲在线观看免费| 亚洲18色成人| 青青青伊人色综合久久| 韩国精品一区二区| 国产一区二区三区精品视频| 国产一区二区免费看| 国产大片一区二区| 99在线热播精品免费| 色老综合老女人久久久| 欧美体内she精视频| 欧美一级片在线| 久久久亚洲欧洲日产国码αv| 久久午夜电影网| 国产精品伦理在线| 亚洲综合一区在线| 日本欧美久久久久免费播放网| 美女网站在线免费欧美精品| 国产乱对白刺激视频不卡 | 亚洲欧美成aⅴ人在线观看| 国产精品福利影院| 亚洲成人tv网| 国产在线国偷精品免费看| 成人黄色国产精品网站大全在线免费观看| 成人午夜视频福利| 欧美日韩免费视频| 精品免费99久久| 亚洲免费观看高清完整版在线观看熊| 亚洲成av人影院| 国产尤物一区二区| 欧美伊人久久久久久久久影院| 欧美一区二区国产| 欧美国产丝袜视频| 日韩国产欧美在线视频| 丰满白嫩尤物一区二区| 欧美视频一区在线| 久久精品亚洲精品国产欧美| 亚洲一区免费观看| 床上的激情91.| 欧美军同video69gay| 国产精品入口麻豆九色| 日本美女一区二区三区| gogo大胆日本视频一区| 欧美成人精品福利| 亚洲自拍偷拍综合| 国产xxx精品视频大全| 在线播放一区二区三区|