硬汉嵌入式论坛

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

[emWin] 关于EDIT控件数据更新

[复制链接]

6

主题

9

回帖

6

积分

新手上路

积分
6
发表于 2013-10-24 20:55:19 | 显示全部楼层 |阅读模式
我用ucGUI和ucOS做了一个对话框,上面有几个edit控件显示数据,创建了一个任务专门GUI_Exec(); 现在的情况是数据变了,但是edit的内容没有更新,我是把数据显示放在了对话框的回调函数的WM_PAINT消息处理里,发现只有对话框第一次显示的时候才发送这个消息,以后就没了,请教下该如何实现edit数据的更新呢?谢谢。。。。


/*****************************************************************
**      FunctionName:void PaintDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_PAINT
*****************************************************************/

static void PaintDialog(WM_MESSAGE * pMsg)
{
                WM_HWIN hWin = pMsg->hWin;
               
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT0),Longitude);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT1),Latitude);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT2),Altitude);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT6),Speed);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT5),FixMode);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT4),Valid_S);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT8),Visible_S);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT3),UTCDate);
                EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT7),UTCTime);


}



/*****************************************************************
**      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/

static void InitDialog(WM_MESSAGE * pMsg)
{
                WM_HWIN hWin = pMsg->hWin;

}

/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg)
{
                int NCode, Id;
            WM_HWIN hWin = pMsg->hWin;
            switch (pMsg->MsgId)
            {
                        case WM_PAINT:
                                    PaintDialog(pMsg);
                                    break;
                        case WM_INIT_DIALOG:
                                    InitDialog(pMsg);
                                    break;
                        case WM_KEY:
                                    switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
                                    {
                                                case GUI_KEY_ESCAPE:
                                                            GUI_EndDialog(hWin, 1);
                                                            break;
                                                case GUI_KEY_ENTER:
                                                            GUI_EndDialog(hWin, 0);
                                                            break;
                                    }
                                    break;
                        case WM_NOTIFY_PARENT:
                                    Id = WM_GetId(pMsg->hWinSrc);
                                    NCode = pMsg->Data.v;        
                                    switch (Id)
                                    {
                                                case GUI_ID_BUTTON37:
                                                            if(NCode==WM_NOTIFICATION_RELEASED)
                                                                                {
                                                                                                done=1;
                                                                                                GUI_EndDialog(hWin, 0);
                                                                                }
                                                            break;
                                                case GUI_ID_CANCEL:
                                                            if(NCode==WM_NOTIFICATION_RELEASED)
                                                                        GUI_EndDialog(hWin, 0);
                                                            break;

                                    }
                                    break;
                        default:
                                    WM_DefaultProc(pMsg);
                    }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2013-10-24 20:58:51 | 显示全部楼层
你这里是初始化的时候只调用了一次,只有定时的更新才可以的,明天我回实验室了,把解决办法发给你。
回复

使用道具 举报

6

主题

9

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2013-10-24 21:36:49 | 显示全部楼层

回 eric2013 的帖子

eric2013:你这里是初始化的时候只调用了一次,只有定时的更新才可以的,明天我回实验室了,把解决办法发给你。 (2013-10-24 20:58) 
好的,谢谢了...
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2013-10-25 12:43:53 | 显示全部楼层
这里我假设hWin是你创建的对话框句柄,然后在主函数里面调用这个,试试看
EDIT_SetValue(WM_GetDialogItem(hWin,GUI_ID_EDIT6),  要更新的数值); GUI_ID_EDIT6根据你的ID号改一下。
如果要是不可以的话,得用这个函数先得到对话框的窗口函数句柄WM_GetClientWindow();也就是要这么调用
EDIT_SetValue(WM_GetDialogItem(WM_GetClientWindow(hWin),GUI_ID_EDIT6),  要更新的数值);

回复

使用道具 举报

6

主题

9

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2013-10-25 21:13:40 | 显示全部楼层

回 eric2013 的帖子

eric2013:这里我假设hWin是你创建的对话框句柄,然后在主函数里面调用这个,试试看
EDIT_SetValue(WM_GetDialogItem(hWin,GUI_ID_EDIT6),  要更新的数值); GUI_ID_EDIT6根据你的ID号改一下。
如果要是不可以的话,得用这个函数先得到对话框的窗口函数句柄WM_GetClientWindow() .. (2013-10-25 12:43) 
谢谢版主,这个问题解决了,我现在发现EDIT控件中有一个光标,我不想显示这个光标,应该用哪个函数设置呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2013-10-25 21:27:00 | 显示全部楼层

回 lhwaizhu 的帖子

lhwaizhu:谢谢版主,这个问题解决了,我现在发现EDIT控件中有一个光标,我不想显示这个光标,应该用哪个函数设置呢? (2013-10-25 21:13) 
这个光标好像没有办法消失,就跟你用电脑上面的控件是一样的,点击了以后会出现控件,只有你点击了别的地方那个控件才会消失。
回复

使用道具 举报

12

主题

22

回帖

58

积分

初级会员

积分
58
发表于 2013-11-12 21:52:31 | 显示全部楼层
可以试试EDIT_EnaBleBlink(),应该可以关闭闪烁光标。
回复

使用道具 举报

0

主题

16

回帖

0

积分

新手上路

积分
0
发表于 2014-5-5 15:59:11 | 显示全部楼层
case WM_KEY:
                                    switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
                                    {
                                                case GUI_KEY_ESCAPE:
                                                            GUI_EndDialog(hWin, 1);
                                                            break;
                                                case GUI_KEY_ENTER:
                                                            GUI_EndDialog(hWin, 0);
                                                            break;
                                    }
你好,这段代码什么意思啊,麻烦了!
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2014-7-17 10:12:43 | 显示全部楼层
楼主,你的内容更新问题最终怎么解决的,可以写一下嘛
回复

使用道具 举报

5

主题

12

回帖

5

积分

新手上路

积分
5
发表于 2014-7-22 09:50:49 | 显示全部楼层

回 lhwaizhu 的帖子

lhwaizhu:谢谢版主,这个问题解决了,我现在发现EDIT控件中有一个光标,我不想显示这个光标,应该用哪个函数设置呢? (2013-10-25 21:13)
楼主,光标不显示问题解决了吗?[s:152][s:152]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 10:21 , Processed in 0.196941 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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