|

楼主 |
发表于 2017-7-10 10:05:45
|
显示全部楼层
周一归来 ,直接上代码。
#include <string.h>
#include <stdlib.h>
#include "DIALOG.h"
#include "LISTVIEW.h"
#include "GUI.h"
#include "./Bsp/led/bsp_led.h"
/*********************************************************************
* Types
**********************************************************************/
extern WM_HWIN hPage[6];
extern WM_HWIN hNumPad;
typedef struct {
char *pText;
int Width;
int Align;
int (*fpCompare)(const void *p0, const void *p1);
} COL_PROP;
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "", 0, 0, 0, 800, 480 },
{ LISTVIEW_CreateIndirect, NULL, GUI_ID_LISTVIEW0, 50, 50, 500, 250 },
{ BUTTON_CreateIndirect, "Add row", GUI_ID_BUTTON0, 1, 366, 120, 80 },
{ BUTTON_CreateIndirect, "Delete row", GUI_ID_BUTTON1, 126, 366, 120, 80 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON2, 251, 366, 120, 80, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON3, 376, 366, 120, 80, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON4, 501, 366, 120, 80, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Return", GUI_ID_BUTTON5, 626, 366, 120, 80, 0, 0x0, 0 },
};
static const COL_PROP _aColProps[] = {
{ " IN", 100, GUI_TA_HCENTER, LISTVIEW_CompareText},
{ "Fude", 100, GUI_TA_HCENTER, LISTVIEW_CompareText},
{ "Cycle", 100, GUI_TA_HCENTER, LISTVIEW_CompareDec },
{ "Cycle1", 100, GUI_TA_HCENTER, LISTVIEW_CompareDec }
};
/*********************************************************************
* _IntToStr
* Function description
* 将整数值转换为字符串
*/
static void _IntToStr(char * pBuffer, int Num) {
char * p;
char c;
if (Num < 0)
{
*pBuffer++ = '-';
Num = -Num;
}
p = pBuffer;
if (Num)
{
while (Num)
{
*pBuffer++ = '0' + (Num % 10);
Num /= 10;
}
} else {
*pBuffer++ = '0';
}
*pBuffer-- = 0;
while (p < pBuffer)
{
c = *p;
*p++ = *pBuffer;
*pBuffer-- = c;
}
}
/********************************************************************
* _AddRow
* Function description
* adds a new row of data to the given LISTVIEW
*
* Parameter:
* hItem - Handle of LISTVIEW widget
* Insert - 0 for adding a row
*/
static int _AddRow(WM_HWIN hItem, int Insert) {
int i;
int r;
int Len;
int NumRows;
char * apText[4];
char acText[4][10] = {{0}};
char acBuffer[6];
strcpy(acText[0], "Mode ");
NumRows = LISTVIEW_GetNumRows(hItem);
_IntToStr(acBuffer, NumRows);
Len = strlen(acBuffer);
for (i = Len; i < 4; i++)
{
strcat(acText[0], " ");
}
strcat(acText[0], acBuffer);
_IntToStr(acText[1], 123);
_IntToStr(acText[2], 123);
_IntToStr(acText[3], 123);
for (i = 0; i < 4; i++)
{
apText = acText;
}
if (Insert==0)
{
r = LISTVIEW_AddRow(hItem, (const GUI_ConstString *)apText);
}
return r;
}
/*********************************************************************
* _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hDlg;
WM_HWIN hItem;
int r=0,c=0;
char * apText[4];
char acText[4][10] = {{0}};
int Id;
int NCode;
int i;
hDlg = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
hItem = pMsg->hWin;
FRAMEWIN_SetFont(hItem, GUI_FONT_20_ASCII);
FRAMEWIN_SetText(hItem, "LISTVIEW");
FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
FRAMEWIN_SetTitleHeight(hItem, 24);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON1);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON2);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON3);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON4);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON5);
BUTTON_SetFont(hItem, GUI_FONT_24_1);
hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
HEADER_SetDragLimit(LISTVIEW_GetHeader(hItem), 1);
LISTVIEW_EnableCellSelect(hItem,1);
LISTVIEW_SetFont(hItem,GUI_FONT_20B_ASCII);
LISTVIEW_SetAutoScrollV(hItem, 1);
LISTVIEW_SetGridVis(hItem, 1);
LISTVIEW_SetHeaderHeight(hItem,25);
LISTVIEW_SetRowHeight(hItem,25);
LISTVIEW_SetRBorder(hItem, 5);
LISTVIEW_SetLBorder(hItem, 5);
for (i = 0; i < 4; i++) //添加列
{
LISTVIEW_AddColumn(hItem, _aColProps.Width, _aColProps.pText, _aColProps.Align);
LISTVIEW_SetCompareFunc(hItem, i, _aColProps.fpCompare);
}
LISTVIEW_EnableSort(hItem);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (NCode) {
case WM_NOTIFICATION_VALUE_CHANGED:
break;
case WM_NOTIFICATION_RELEASED:
switch (Id) {
case GUI_ID_BUTTON0://添加键
hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
_AddRow(hItem, 0);
break;
case GUI_ID_BUTTON1://删除键
hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
i = LISTVIEW_GetSelUnsorted(hItem);
LISTVIEW_DeleteRow(hItem, (i >= 0) ? i : 0);
break;
case GUI_ID_BUTTON2://调用键
break;
case GUI_ID_BUTTON3://保存键
break;
case GUI_ID_BUTTON4://设置键
break;
case GUI_ID_BUTTON5://返回键
WM_ShowWindow(hPage[0]);
WM_HideWindow(hPage[4]);
WM_SetFocus(hPage[0]);
LED3_OFF;
break;
case GUI_ID_LISTVIEW0:
hItem = WM_GetDialogItem(hDlg, GUI_ID_LISTVIEW0);
r = LISTVIEW_GetSel(hItem);
c = LISTVIEW_GetSelCol(hItem);
/*写数据*/
_IntToStr(acText[1], 555);
apText[1] = acText[1];
LISTVIEW_SetItemText(hItem,c,r,(const char *)apText[1]);
break;
}
case WM_NOTIFICATION_CLICKED:
switch (Id) {
case GUI_ID_LISTVIEW0:
WM_ShowWindow(hNumPad);
LED3_ON;
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
WM_HWIN CreateFramewin4(WM_HWIN hParent);
WM_HWIN CreateFramewin4(WM_HWIN hParent) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, hParent, 0, 0);
return hWin;
} |
|