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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? widget_listboxownerdraw.c

?? UC_GUI開(kāi)發(fā)源代碼,里面含有范例,源文件
?? C
字號(hào):
/*
*********************************************************************************************************
*                                             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);
  }
}
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香另类激情小说| 一区二区三区中文免费| 亚洲国产视频网站| 日韩成人一级片| 99在线热播精品免费| 日韩无一区二区| 亚洲综合图片区| 粉嫩av一区二区三区| 91精品国产手机| 亚洲色图欧美激情| jlzzjlzz亚洲女人18| 国产精品全国免费观看高清| 久久综合久久久久88| 轻轻草成人在线| 91精品免费在线| 首页国产欧美日韩丝袜| 欧美日韩亚洲高清一区二区| 亚洲精品国产精华液| 色综合一个色综合亚洲| 中文字幕一区二区三区不卡| 91在线观看下载| 亚洲另类中文字| 欧美体内she精视频| 午夜电影一区二区三区| 日韩手机在线导航| 国内欧美视频一区二区| 国产欧美一区二区三区在线看蜜臀| 国产麻豆日韩欧美久久| 国产精品久久二区二区| 国产精品一二三| 国产精品色呦呦| 在线视频一区二区三| 日韩国产欧美在线播放| 精品国产一区二区精华| 成a人片国产精品| 亚洲综合一区二区精品导航| 欧美午夜片在线看| 极品美女销魂一区二区三区免费| 国产欧美一区二区三区鸳鸯浴 | 在线观看日韩一区| 日本午夜精品视频在线观看| 久久在线免费观看| 欧美日韩国产美女| 一个色在线综合| 精品污污网站免费看| 亚洲伦理在线精品| 欧美va在线播放| 91麻豆精品在线观看| 久久成人精品无人区| 18欧美亚洲精品| 精品国产一区二区三区不卡 | 欧美性高清videossexo| 国产酒店精品激情| 亚洲成人久久影院| 久久精品日韩一区二区三区| 欧美性生活影院| 成人伦理片在线| 国内精品久久久久影院薰衣草| 97精品国产露脸对白| 久久99久久精品欧美| 亚洲午夜在线电影| 亚洲人午夜精品天堂一二香蕉| 欧美电影免费观看高清完整版在线| 欧美色窝79yyyycom| 91丝袜高跟美女视频| 成人国产一区二区三区精品| 九九热在线视频观看这里只有精品 | 国产成人自拍网| 国产曰批免费观看久久久| 麻豆一区二区99久久久久| 午夜久久久久久| 三级亚洲高清视频| 亚洲一级在线观看| 天天色综合天天| 免费av成人在线| 在线综合视频播放| 欧美一区二区三区四区五区| 4438x亚洲最大成人网| 欧美伦理电影网| 日韩精品中文字幕在线不卡尤物| 欧美一级午夜免费电影| 欧美大片在线观看一区二区| 欧美大片在线观看| 国产精品你懂的在线欣赏| 中文字幕永久在线不卡| 亚洲成av人片在线观看无码| 丝袜美腿亚洲色图| 久久av中文字幕片| 国产成人精品亚洲午夜麻豆| 99久久久精品免费观看国产蜜| 91行情网站电视在线观看高清版| 欧美日韩一区精品| 欧美成人午夜电影| 国产精品传媒入口麻豆| 97精品国产露脸对白| 在线观看91精品国产麻豆| 精品久久人人做人人爱| 日韩美女视频一区二区 | 欧亚洲嫩模精品一区三区| 日韩一区二区三区四区| 欧美国产日韩精品免费观看| 亚洲综合男人的天堂| 国产精品综合二区| 欧美视频一区二区三区| 日本一区二区三区dvd视频在线| 一区二区三区四区在线| 精品一区二区三区视频在线观看| gogogo免费视频观看亚洲一| 欧美日韩国产高清一区二区| 国产精品久久久久婷婷| 免费看日韩精品| 欧美日韩精品一区二区三区蜜桃| 国产成人亚洲综合色影视| 欧美精品乱人伦久久久久久| 国产精品麻豆99久久久久久| 国内久久精品视频| 欧美一区二区三区爱爱| 亚洲一区电影777| 91在线小视频| 亚洲三级久久久| 北条麻妃一区二区三区| 久久久久久免费网| 精品在线视频一区| 日韩一本二本av| 午夜精品成人在线视频| 欧美视频中文字幕| 亚洲最快最全在线视频| 99精品久久久久久| 亚洲婷婷综合久久一本伊一区| 国产一区二区免费在线| 精品成人一区二区三区| 久久99久久精品| 精品理论电影在线观看 | av中文字幕一区| 中文字幕永久在线不卡| 色婷婷综合久久久久中文| 亚洲天堂2016| 欧美军同video69gay| 蜜臀av性久久久久蜜臀aⅴ| 日韩午夜中文字幕| 国产精品亚洲综合一区在线观看| 国产天堂亚洲国产碰碰| av午夜精品一区二区三区| 亚洲欧美日韩久久| 欧美日韩三级一区二区| 青青草原综合久久大伊人精品 | 免费在线观看不卡| 久久久久久久久久久久久夜| 成人黄色大片在线观看| 一区二区三区日本| 日韩丝袜情趣美女图片| 成人激情黄色小说| 欧美性一区二区| 韩国av一区二区三区四区| 专区另类欧美日韩| 91精品国产综合久久久久久久久久 | 亚洲国产精品麻豆| 亚洲精品一区二区精华| 成人ar影院免费观看视频| 无码av中文一区二区三区桃花岛| 久久综合色综合88| 欧美色爱综合网| 国产精品综合在线视频| 亚洲高清三级视频| 中文字幕欧美国产| 日韩欧美电影一二三| 在线视频国内一区二区| 国产真实乱子伦精品视频| 一区二区免费在线播放| 中文字幕精品三区| 精品乱码亚洲一区二区不卡| 在线观看视频91| 国产欧美精品一区二区色综合朱莉| 91丨九色丨国产丨porny| 国产在线一区观看| 另类小说视频一区二区| 亚洲一区二区三区美女| 亚洲三级免费电影| 国产精品女同一区二区三区| 久久无码av三级| 91精品国产色综合久久不卡蜜臀 | 欧美videofree性高清杂交| 欧美三级电影网站| 色哟哟一区二区| 色噜噜狠狠成人网p站| 国产成人av电影在线| 激情欧美一区二区| 国产一区中文字幕| 国内欧美视频一区二区| 精品一区二区久久久| 日韩中文字幕亚洲一区二区va在线 | 久久众筹精品私拍模特| jlzzjlzz亚洲日本少妇| 九色综合狠狠综合久久| 一区二区三区在线观看国产| 一区二区三区在线观看网站| 亚洲黄色片在线观看| 亚洲欧美日韩小说| 亚洲.国产.中文慕字在线| 丝袜美腿亚洲色图|