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

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

?? widget_listboxownerdraw.c

?? 多個uC/GUI在PC上模擬實例
?? C
字號:
/**********************************************************************                SEGGER MICROCONTROLLER SYSTEME GmbH                 **        Solutions for real time microcontroller applications        **                                                                    **                    emWin GSC sample code                           **                                                                    ***********************************************************************----------------------------------------------------------------------File        : WIDGET_ListBoxOwnerDraw.cPurpose     : 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一区二区三区免费野_久草精品视频
久久精品国产77777蜜臀| 欧美电视剧在线看免费| 欧美一级高清大全免费观看| 国产视频一区在线观看| 亚洲国产精品久久久久婷婷884| 国产真实乱对白精彩久久| 一本色道久久加勒比精品| 2023国产一二三区日本精品2022| 亚洲狼人国产精品| 国产毛片精品视频| 欧美三级乱人伦电影| 国产精品久久久久天堂| 国产精品综合二区| 日韩女优毛片在线| 亚洲成年人网站在线观看| 99久久国产综合精品麻豆| 精品久久一区二区| 蜜桃免费网站一区二区三区| 欧美三级中文字幕在线观看| 亚洲三级在线看| 大桥未久av一区二区三区中文| 日韩一区二区精品在线观看| 亚洲精品菠萝久久久久久久| 99视频精品全部免费在线| 国产农村妇女毛片精品久久麻豆| 韩日欧美一区二区三区| 日韩欧美一级精品久久| 偷窥少妇高潮呻吟av久久免费| 91久久精品一区二区三| 亚洲免费观看高清| 国产成人99久久亚洲综合精品| 精品日韩一区二区| 国产一区二区主播在线| 精品免费国产二区三区| 美女视频免费一区| 久久综合久久99| 高清不卡在线观看| 日本不卡高清视频| 欧美精品久久天天躁| 婷婷综合五月天| 3751色影院一区二区三区| 肉色丝袜一区二区| 日韩一区二区三区高清免费看看 | 色婷婷综合久久久中文字幕| 中国av一区二区三区| 国产成人综合亚洲91猫咪| 欧美高清在线精品一区| 99国产麻豆精品| 亚洲中国最大av网站| 欧美高清一级片在线| 青青草视频一区| 久久嫩草精品久久久久| 国产盗摄精品一区二区三区在线| 中文成人av在线| 在线观看国产精品网站| 日韩av成人高清| 欧美videofree性高清杂交| 久久爱www久久做| 亚洲国产激情av| 欧美在线一二三四区| 激情成人综合网| 国产精品黄色在线观看| 宅男在线国产精品| 成人午夜免费电影| 亚洲国产一区二区视频| 26uuu国产日韩综合| 色综合久久天天综合网| 日本不卡高清视频| 国产精品久线观看视频| 4438亚洲最大| www.成人在线| 美腿丝袜亚洲三区| 亚洲少妇30p| 日韩午夜激情免费电影| www.亚洲精品| 精东粉嫩av免费一区二区三区| 欧美国产1区2区| 日韩视频免费观看高清完整版 | 欧美系列一区二区| 国产在线精品国自产拍免费| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美国产一区视频在线观看| 欧美色偷偷大香| 成人午夜视频福利| 久久国产夜色精品鲁鲁99| 一区二区国产视频| 日本一区二区综合亚洲| 欧美一区二区三区视频在线| 91麻豆文化传媒在线观看| 久久66热re国产| 午夜视频一区二区| 一区二区三区四区蜜桃 | 国产精品系列在线播放| 三级欧美韩日大片在线看| 亚洲三级电影网站| 亚洲国产精品99久久久久久久久 | 亚洲精品视频在线| 国产亚洲一区字幕| 亚洲精品一区二区三区99 | 日韩三级免费观看| 欧美这里有精品| 91麻豆免费观看| 成人午夜私人影院| 国产91精品入口| 国产福利一区在线| 国产一区中文字幕| 狠狠色丁香婷婷综合| 久久电影网电视剧免费观看| 日韩精品一二三区| 日韩激情一区二区| 日本亚洲三级在线| 欧美aaa在线| 日本vs亚洲vs韩国一区三区| 天堂va蜜桃一区二区三区 | 亚洲精品第一国产综合野| 中文字幕在线一区免费| 最新中文字幕一区二区三区 | 午夜婷婷国产麻豆精品| 亚洲在线一区二区三区| 一区二区三区在线观看视频| 亚洲柠檬福利资源导航| 亚洲激情自拍视频| 亚洲另类春色校园小说| 亚洲激情欧美激情| 亚洲一级电影视频| 午夜欧美在线一二页| 欧美bbbbb| 国产美女精品人人做人人爽| 成人免费视频一区| aaa欧美日韩| 欧美色网一区二区| 日韩免费在线观看| 欧美高清在线一区| 一区二区三区不卡视频 | 日韩欧美中文字幕公布| 日韩欧美亚洲国产精品字幕久久久 | 欧美日韩另类国产亚洲欧美一级| 欧美麻豆精品久久久久久| 精品入口麻豆88视频| 国产精品美女视频| 亚洲永久精品大片| 日本视频一区二区| 国产精品一区二区无线| 91视频精品在这里| 在线不卡中文字幕| 国产午夜精品久久久久久免费视| 亚洲视频1区2区| 免费高清成人在线| 波多野结衣中文字幕一区二区三区| 色婷婷综合视频在线观看| 欧美一激情一区二区三区| 欧美国产日产图区| 日日摸夜夜添夜夜添精品视频 | 国产欧美日本一区视频| 亚洲一区二区三区四区五区中文 | 911精品国产一区二区在线| 久久免费看少妇高潮| 一区二区三区色| 国产在线视频精品一区| 一本一道久久a久久精品 | 国内精品不卡在线| 一本大道久久a久久精品综合| 亚洲女与黑人做爰| 韩国欧美一区二区| 欧美午夜精品一区二区三区| 久久精品网站免费观看| 午夜精品免费在线| 波多野结衣欧美| 4438成人网| 一区二区激情小说| 成人午夜看片网址| 欧美电视剧在线看免费| 亚洲一区二区三区中文字幕在线| 福利一区在线观看| 日韩免费视频一区| 视频一区视频二区中文字幕| 91在线播放网址| 欧美激情一区二区三区全黄| 美国一区二区三区在线播放| 在线观看亚洲a| 国产精品久久久久久亚洲伦| 国产自产高清不卡| 精品欧美一区二区在线观看| 亚洲国产日韩精品| 91久久人澡人人添人人爽欧美| 欧美激情自拍偷拍| 国产真实乱偷精品视频免| 欧美一级艳片视频免费观看| 亚洲线精品一区二区三区| 99综合电影在线视频| 国产日韩亚洲欧美综合| 韩国v欧美v亚洲v日本v| 日韩欧美专区在线| 免费一级片91| 欧美一区二区成人6969| 男男gaygay亚洲| 欧美r级在线观看| 精品亚洲国产成人av制服丝袜 | 成人午夜视频在线| 国产调教视频一区|