硬汉嵌入式论坛

 找回密码
 立即注册
查看: 9507|回复: 5
收起左侧

[μCGUI] 第一次发帖。。请大家关注  UCOS+UCGUI实时的用LISTVIEW显示动态数据。需

[复制链接]

1

主题

7

回帖

1

积分

新手上路

积分
1
发表于 2013-3-2 21:41:31 | 显示全部楼层 |阅读模式
static const GUI_WIDGET_CREATE_INFO _aDialogCreate4[] = {
    { FRAMEWIN_CreateIndirect, "Caption",   0,                0,  0,  320,240,FRAMEWIN_CF_ACTIVE,0},
    { LISTVIEW_CreateIndirect, "LIEBIAO",       GUI_ID_LISTVIEW0, 0, 10,300,170,0,0},
    { BUTTON_CreateIndirect,   "BUTTON1",   GUI_ID_BUTTON0,   213,185,105,40, 0,0}
};

void InitDialog4(WM_MESSAGE * pMsg)
{

    //HEADER_Handle hHeader;
    WM_HWIN hWin = pMsg->hWin;

    //
    //FRAMEWIN
    //
    FRAMEWIN_SetClientColor(hWin,GUI_DARKCYAN);
    FRAMEWIN_SetTitleVis(hWin,0);
    //
    //GUI_ID_LISTVIEW0
    //
    LISTVIEW_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),BUTTON_CI_UNPRESSED,GUI_GREEN);
    LISTVIEW_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),BUTTON_CI_UNPRESSED,GUI_BLACK);
    LISTVIEW_SetFont(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),&GUI_Font10S_ASCII);

    //hHeader=LISTVIEW_GetHeader(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0));    //获得表头的句柄
    //HEADER_SetFont(hHeader,&GUI_FontHZ_GUI_29);  //使窗口表头显示汉字
    LISTVIEW_SetDefaultGridColor(GUI_BLACK); //设置默认线条的颜色是黑色
        LISTVIEW_SetFont(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),&GUI_Font24B_ASCII);
    LISTVIEW_SetRowHeight(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),25);
    LISTVIEW_AddColumn(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),60, "GOUDAO", GUI_TA_HCENTER);
    LISTVIEW_AddColumn(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),60, "CHESHU", GUI_TA_HCENTER);
    LISTVIEW_AddColumn(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0),60, "SHUDU", GUI_TA_HCENTER);
    SCROLLBAR_CreateAttached(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0), SCROLLBAR_CF_VERTICAL);
    LISTVIEW_SetGridVis(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0), 1);
    for (i = 0; i < GUI_COUNTOF(_aTable_1); i++)
    {
       LISTVIEW_AddRow(WM_GetDialogItem(hWin,GUI_ID_LISTVIEW0), _aTable_1);
    }
    //
    //GUI_ID_BUTTON0      
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_LIGHTBLUE);      

}

使用回调机制的方法建立一个FRAME的方法建立一个LISTVIEW实时显示动态数据。。。需要怎么做呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107415
QQ
发表于 2013-3-3 18:58:57 | 显示全部楼层
不好意思啊,LISTVIEW的动态更新我以前做过一个,现在找不到了,后面我找一下,好久没用这个
控件了,没办法指导你。
回复

使用道具 举报

1

主题

7

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2013-3-3 21:09:24 | 显示全部楼层
没事。。要谢谢你啊。。。现在我改用EDIT控件了。是想用EDIT来实时的显示动态数据。。不过还是不知道怎么做。。这是我的程序

#include "JIEMIAN.h"
#include "MAINJIEMIAN.h"
PARAM  DATA;
unsigned int input[10]={0,0,0,0,0,0,0,0,0,0};     //将输入的数字承储进入该数组
unsigned int password[]={3,3,3,3,3,3,3,3,3,3}; //设定密码
unsigned int i=0;
unsigned int j,k;
unsigned int flag=1; //设置标志位
WM_MESSAGE pMsg1;
WM_HWIN hWin2;   //下面MAINTASK函数中用到

static const GUI_WIDGET_CREATE_INFO _aDialogCreate4[] = {
    { FRAMEWIN_CreateIndirect, "实时显示界面",0,                0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT0,     62, 166,58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "密度",      GUI_ID_TEXT0,     1,  166,61, 35, 0,0},
    { BUTTON_CreateIndirect,   "返回",    GUI_ID_BUTTON0,   160,166,135,45, 0,0},
    { EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT1,     62, 104,58, 25, 0,0},
    { TEXT_CreateIndirect,     "车型",   GUI_ID_TEXT1,     1,  104,61, 35, 0,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT2,     62, 104,58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "速度",     GUI_ID_TEXT2,     1,  104,61, 35, 0,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT3,     241,43, 58, 25, 0,0},
    { EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT9,     62, 43, 58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "车流量",GUI_ID_TEXT3,     163,40, 72, 35, 0,0},
    { TEXT_CreateIndirect,     "实时显示监测",  GUI_ID_TEXT9,     0, 0, 160,35, 0,0},
    { TEXT_CreateIndirect,     "车速",    GUI_ID_TEXT5,     1,  40, 65, 35, 0,0}
};


/*****************************************************************
**      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**      实时监测界面资源表的初始化                                                
**      call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/

void InitDialog4(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetClientColor(hWin,GUI_LIGHTYELLOW);
    FRAMEWIN_SetTitleHeight(hWin,25);
    FRAMEWIN_SetFont(hWin,&GUI_FontHZ_GUI_21);
    //
    //GUI_ID_EDIT0
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT0),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT0
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_LIGHTBLUE);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontHZ_GUI_21);
    //
    //GUI_ID_EDIT0
    //
    EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT1),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT1
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_FontHZ_GUI_21);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT1),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_EDIT2
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT2),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT2
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT2),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_EDIT3
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT3),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_EDIT0
    //
    EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT9),BUTTON_CI_UNPRESSED,GUI_GREEN);
    EDIT_SetDecMode(WM_GetDialogItem(hWin,GUI_ID_EDIT9),0,0,65536,2,0);//设置编辑框的十进制模式
    //EDIT_SetHexMode(WM_GetDialogItem(hWin, GUI_ID_EDIT2), 0x1234, 0, 0xffffff);
    //
    //GUI_ID_TEXT3
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT3),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT9),&GUI_FontHZ_GUI_21);
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT9),GUI_LIGHTBLUE);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT9),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT5),&GUI_FontHZ_GUI_21);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT5),GUI_TA_VCENTER|GUI_TA_CENTER);



}

/*********************************************************************
*
*       Dialog callback routine     实时监测界面的回调函数
*/
static void _cbCallback4(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_INIT_DIALOG:
            InitDialog4(pMsg);
            break;     
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (NCode)
            {
                  case WM_NOTIFICATION_RELEASED:  //仅仅释放时才有反应
                       switch(Id)
                        {
                          case GUI_ID_BUTTON0:
                          FRAMEWIN_Delete(hWin);      //删除界面
                          GUI_CreateDialogBox(_aDialogCreate1,GUI_COUNTOF(_aDialogCreate1),&_cbCallback1,0,0,0);//创建一个对话框(即返回主界面)     
                        }
            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}

void MainTask(void)
{
    GUI_Init();   
    WM_SetDesktopColor(GUI_RED);      /* 自动更新桌面窗口*/
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
    while(1)
    {                  
       EDIT_SetValue(WM_GetDialogItem(hWin2,GUI_ID_EDIT9),i++);//用来实时显示动态数据
       GUI_Exec();  
    }
}

我首先定义一个hWin2对话框的句柄。然后创建一个FRAME,最后在while循环里面来进行实时数据的更新。。但是发现没用。。唉,不知道怎么办了
回复

使用道具 举报

1

主题

7

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2013-3-3 21:10:21 | 显示全部楼层

回 eric2013 的帖子

eric2013:不好意思啊,LISTVIEW的动态更新我以前做过一个,现在找不到了,后面我找一下,好久没用这个
控件了,没办法指导你。


 (2013-03-03 18:58) 
没事。。要谢谢你啊。。。现在我改用EDIT控件了。是想用EDIT来实时的显示动态数据。。不过还是不知道怎么做。。这是我的程序

#include "JIEMIAN.h"
#include "MAINJIEMIAN.h"
PARAM  DATA;
unsigned int input[10]={0,0,0,0,0,0,0,0,0,0};     //将输入的数字承储进入该数组
unsigned int password[]={3,3,3,3,3,3,3,3,3,3}; //设定密码
unsigned int i=0;
unsigned int j,k;
unsigned int flag=1; //设置标志位
WM_MESSAGE pMsg1;
WM_HWIN hWin2;   //下面MAINTASK函数中用到

static const GUI_WIDGET_CREATE_INFO _aDialogCreate4[] = {
    { FRAMEWIN_CreateIndirect, "实时显示界面",0,                0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT0,     62, 166,58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "密度",      GUI_ID_TEXT0,     1,  166,61, 35, 0,0},
    { BUTTON_CreateIndirect,   "返回",    GUI_ID_BUTTON0,   160,166,135,45, 0,0},
    { EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT1,     62, 104,58, 25, 0,0},
    { TEXT_CreateIndirect,     "车型",   GUI_ID_TEXT1,     1,  104,61, 35, 0,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT2,     62, 104,58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "速度",     GUI_ID_TEXT2,     1,  104,61, 35, 0,0},
    //{ EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT3,     241,43, 58, 25, 0,0},
    { EDIT_CreateIndirect,      NULL,       GUI_ID_EDIT9,     62, 43, 58, 25, 0,0},
    //{ TEXT_CreateIndirect,     "车流量",GUI_ID_TEXT3,     163,40, 72, 35, 0,0},
    { TEXT_CreateIndirect,     "实时显示监测",  GUI_ID_TEXT9,     0, 0, 160,35, 0,0},
    { TEXT_CreateIndirect,     "车速",    GUI_ID_TEXT5,     1,  40, 65, 35, 0,0}
};


/*****************************************************************
**      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**      实时监测界面资源表的初始化                                                
**      call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/

void InitDialog4(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetClientColor(hWin,GUI_LIGHTYELLOW);
    FRAMEWIN_SetTitleHeight(hWin,25);
    FRAMEWIN_SetFont(hWin,&GUI_FontHZ_GUI_21);
    //
    //GUI_ID_EDIT0
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT0),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT0
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_LIGHTBLUE);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontHZ_GUI_21);
    //
    //GUI_ID_EDIT0
    //
    EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT1),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT1
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_FontHZ_GUI_21);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT1),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_EDIT2
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT2),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_TEXT2
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT2),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_EDIT3
    //
    //EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT3),BUTTON_CI_UNPRESSED,GUI_GREEN);
    //
    //GUI_ID_EDIT0
    //
    EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT9),BUTTON_CI_UNPRESSED,GUI_GREEN);
    EDIT_SetDecMode(WM_GetDialogItem(hWin,GUI_ID_EDIT9),0,0,65536,2,0);//设置编辑框的十进制模式
    //EDIT_SetHexMode(WM_GetDialogItem(hWin, GUI_ID_EDIT2), 0x1234, 0, 0xffffff);
    //
    //GUI_ID_TEXT3
    //
    //TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&GUI_FontHZ_GUI_21);
    //TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT3),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT9),&GUI_FontHZ_GUI_21);
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT9),GUI_LIGHTBLUE);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT9),GUI_TA_VCENTER|GUI_TA_CENTER);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT5),&GUI_FontHZ_GUI_21);
    TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT5),GUI_TA_VCENTER|GUI_TA_CENTER);



}

/*********************************************************************
*
*       Dialog callback routine     实时监测界面的回调函数
*/
static void _cbCallback4(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_INIT_DIALOG:
            InitDialog4(pMsg);
            break;     
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (NCode)
            {
                  case WM_NOTIFICATION_RELEASED:  //仅仅释放时才有反应
                       switch(Id)
                        {
                          case GUI_ID_BUTTON0:
                          FRAMEWIN_Delete(hWin);      //删除界面
                          GUI_CreateDialogBox(_aDialogCreate1,GUI_COUNTOF(_aDialogCreate1),&_cbCallback1,0,0,0);//创建一个对话框(即返回主界面)     
                        }
            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}

void MainTask(void)
{
    GUI_Init();   
    WM_SetDesktopColor(GUI_RED);      /* 自动更新桌面窗口*/
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
    while(1)
    {                  
       EDIT_SetValue(WM_GetDialogItem(hWin2,GUI_ID_EDIT9),i++);//用来实时显示动态数据
       GUI_Exec();  
    }
}

我首先定义一个hWin2对话框的句柄。然后创建一个FRAME,最后在while循环里面来进行实时数据的更新。。但是发现没用。。唉,不知道怎么办了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107415
QQ
发表于 2013-3-5 20:37:45 | 显示全部楼层

回 gonggy 的帖子

gonggy:没事。。要谢谢你啊。。。现在我改用EDIT控件了。是想用EDIT来实时的显示动态数据。。不过还是不知道怎么做。。这是我的程序

#include "JIEMIAN.h"
#include "MAINJIEMIAN.h"
....... (2013-03-03 21:10) 
看这个里面的例子

http://www.armbbs.cn/forum.php?mod=viewthread&tid=377

基于uCOS-II +ucGUI的超级DEMO
官方也有一个在控件上面计数的例子,你好好的看一下。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2018-5-18 07:56:02 | 显示全部楼层
楼主,你的显示动态数据做好了,能分享一下吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-30 13:52 , Processed in 0.169036 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表