⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 widget_listview.c

📁 uc/os下的gui,友好的交互界面可以使你的产品更有吸引力
💻 C
字号:
/**********************************************************************                SEGGER MICROCONTROLLER SYSTEME GmbH                 **        Solutions for real time microcontroller applications        ************************************************************************                                                                    **        (c) 2002         SEGGER Microcontroller Systeme GmbH        **                                                                    **        Internet: www.segger.com    Support:  support@segger.com    **                                                                    *************************************************************************** emWin/GSC Grafical user interface for embedded applications ****emWin is protected by international copyright laws. Knowledge of thesource code may not be used to write a similar product. This file mayonly be used in accordance with a license and should not be re-distributed in any way. We appreciate your understanding and fairness.----------------------------------------------------------------------File        : WIDGET_ListView.cPurpose     : Demonstrates the use of header widgets---------------------------END-OF-HEADER------------------------------*/#include <stddef.h>#include <string.h>#include "GUI.h"#include "LISTVIEW.h"#include "FRAMEWIN.h"/***********************************************************************       Defines************************************************************************/#define SPEED 650#define MSG_CHANGE_MAIN_TEXT (WM_USER + 0)#define MSG_CHANGE_INFO_TEXT (WM_USER + 1)/***********************************************************************       Static data************************************************************************/static const GUI_COLOR Colors[]      = { 0, GUI_BLUE };static const GUI_LOGPALETTE Palette  = {   2,     /* bps */  1,     /* transparency */  Colors /* pointer to colors */};static const unsigned char acBarCode[] = {  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,  _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_, ________, ________, ________, ________, _XXX_X__, XXX__XX_, X_X_X_XX, __X_XXX_,};static const GUI_BITMAP bmBarCode = { 96, 10, 12, 1, acBarCode, &Palette};static const char * _aTable_1[][3] = {  { "623499-0010001", "1", "Item 1" },  { "623499-0010002", "2", "Item 2" },  { "623499-0010003", "3", "Item 3" },  { "623499-0010004", "4", "Item 4" },  { "623499-0010005", "5", "Item 5" },  { "623499-0010006", "6", "Item 6" },  { "623499-0010007", "7", "Item 7" },  { "623499-0010008", "8", "Item 8" }};static const char * _aTable_2[][3] = {  { "111111-1111111", "100-A", "Item AAA" },  { "222222-2222222", "100-B", "Item BBB" },  { "333333-3333333", "100-C", "Item CCC" },  { "444444-4444444", "100-D", "Item DDD" },  { "555555-5555555", "100-E", "Item EEE" },  { "666666-6666666", "100-F", "Item FFF" },  { "777777-7777777", "100-G", "Item GGG" },  { "888888-8888888", "100-H", "Item HHH" }};static LISTVIEW_Handle _hListView;static char _acMainText[100];static char _acInfoText[100];/***********************************************************************       Static code************************************************************************//*********************************************************************       _ChangeMainText**  Sends a message to the background window and invalidate it, so*  the callback of the background window display the new text.*/static void _ChangeMainText(char* pStr) {  WM_MESSAGE Message;  Message.MsgId  = MSG_CHANGE_MAIN_TEXT;  Message.Data.p = pStr;  WM_SendMessage(WM_HBKWIN, &Message);  WM_InvalidateWindow(WM_HBKWIN);}/*********************************************************************       _ChangeInfoText**  Sends a message to the background window and invalidate it, so*  the callback of the background window display the new text.*/static void _ChangeInfoText(char* pStr) {  WM_MESSAGE Message;  Message.MsgId  = MSG_CHANGE_INFO_TEXT;  Message.Data.p = pStr;  WM_SendMessage(WM_HBKWIN, &Message);  WM_InvalidateWindow(WM_HBKWIN);  GUI_Delay(SPEED);}/*********************************************************************       _cbBkWindow*/static void _cbBkWindow(WM_MESSAGE* pMsg) {  switch (pMsg->MsgId) {    case MSG_CHANGE_MAIN_TEXT:      strcpy(_acMainText, pMsg->Data.p);      WM_InvalidateWindow(pMsg->hWin);      break;    case MSG_CHANGE_INFO_TEXT:      strcpy(_acInfoText, pMsg->Data.p);      WM_InvalidateWindow(pMsg->hWin);      break;    case WM_PAINT:      GUI_SetBkColor(GUI_BLACK);      GUI_Clear();      GUI_SetColor(GUI_WHITE);      GUI_SetFont(&GUI_Font24_ASCII);      GUI_DispStringHCenterAt("LISTVIEW Widget - Sample", 160, 5);      GUI_SetFont(&GUI_Font8x16);      GUI_DispStringAt(_acMainText, 5, 40);      GUI_SetFont(&GUI_Font8x8);      GUI_DispStringAt(_acInfoText, 5, 60);      break;    default:      WM_DefaultProc(pMsg);  }}/***********************************************************************       _Demo*/static void _Demo(void) {  unsigned int i, j;  int Key = 0;  int Cnt = 15;  char acInfoText[] = "-- sec to play with header control";  HEADER_Handle hHeader;  hHeader = LISTVIEW_GetHeader(_hListView);  WM_SetFocus(_hListView);  _ChangeInfoText("LISTVIEW_AddColumn");  LISTVIEW_AddColumn(_hListView, 100, "EAN",         GUI_TA_CENTER);  GUI_Delay(SPEED / 2);  LISTVIEW_AddColumn(_hListView,  50, "Order #\0x0", GUI_TA_CENTER);  GUI_Delay(SPEED / 2);  LISTVIEW_AddColumn(_hListView, 100, "Description", GUI_TA_CENTER);  GUI_Delay(SPEED / 2);  _ChangeInfoText("SCROLLBAR_CreateAttached");  SCROLLBAR_CreateAttached(_hListView, SCROLLBAR_CF_VERTICAL);  GUI_Delay(SPEED / 2);  _ChangeInfoText("LISTVIEW_AddRow");  for (i = 0; i < GUI_COUNTOF(_aTable_1); i++) {    LISTVIEW_AddRow(_hListView, _aTable_1[i]);    GUI_Delay(SPEED / 3);  }  _ChangeInfoText("LISTVIEW_IncSel");  for (i = 0; i < LISTVIEW_GetNumRows(_hListView); i++) {    LISTVIEW_IncSel(_hListView);    GUI_Delay(SPEED / 4);  }  GUI_Delay(SPEED / 4);  _ChangeInfoText("LISTVIEW_DecSel");  for (i = 0; i < LISTVIEW_GetNumRows(_hListView); i++) {    LISTVIEW_DecSel(_hListView);    GUI_Delay(SPEED / 4);  }  GUI_Delay(SPEED / 4);  _ChangeInfoText("LISTVIEW_SetTextAlign");  LISTVIEW_SetTextAlign(_hListView, 0, GUI_TA_RIGHT);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("LISTVIEW_SetColumnWidth");  LISTVIEW_SetColumnWidth(_hListView, 1, 70);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("HEADER_SetTextColor");  HEADER_SetTextColor(hHeader, GUI_BLUE);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("LISTVIEW_SetItemText");  for (i = 0; i < GUI_COUNTOF(_aTable_2); i++) {    for (j = 0; j < GUI_COUNTOF(_aTable_2[i]); j++) {      LISTVIEW_SetItemText(_hListView, j, i, _aTable_2[i][j]);    }  }  GUI_Delay(SPEED / 2);  _ChangeInfoText("LISTVIEW_SetBkColor");  LISTVIEW_SetBkColor(_hListView, 0, GUI_YELLOW);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("LISTVIEW_SetGridVis");  LISTVIEW_SetGridVis(_hListView, 1);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("HEADER_SetHeight");  HEADER_SetHeight(hHeader, 30);  GUI_Delay(SPEED * 0.7);  _ChangeInfoText("HEADER_SetBitmapEx");  HEADER_SetBitmap(hHeader, 0, &bmBarCode);  GUI_Delay(SPEED * 0.7);  while ((Key != GUI_KEY_ENTER) && (Cnt > 0)) {    acInfoText[0] = '0' + (Cnt / 10);    acInfoText[1] = '0' + (Cnt-- % 10);    _ChangeInfoText(acInfoText);    GUI_Delay(1000);    Key = GUI_GetKey();  }}/***********************************************************************       _DemoListView*/static void _DemoListView(void) {  _ChangeMainText("LISTVIEW control without parent");  _ChangeInfoText("LISTVIEW_Create");  _hListView = LISTVIEW_Create(10, 80, 300, 89, 0, 1234, WM_CF_SHOW, 0);  GUI_Delay(SPEED / 2);  _Demo();  _ChangeInfoText("LISTVIEW_Delete");  LISTVIEW_Delete(_hListView);  GUI_Delay(SPEED);}/***********************************************************************       MainTask************************************************************************/void MainTask(void) {  GUI_Init();  WM_EnableMemdev(WM_HBKWIN);  WM_SetCreateFlags(WM_CF_MEMDEV);  WM_SetCallback(WM_HBKWIN, _cbBkWindow);  GUI_CURSOR_Show();  while(1) {    _DemoListView();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -