野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13038|回复: 5

emWin中如何在Dialog建立后更改

[复制链接]
发表于 2015-6-15 08:36:48 | 显示全部楼层 |阅读模式
你好,火哥,我在一个emWin显示任务中使用 GUI_ExecDialogBox()建立一个窗口,在这窗口中加载有文本Text等部件,想问下为什么在下面的while(1)的函数中无法执行更改Text部件的操作,哪怕是使用GUI_DispStringAt()添加内容也无法显示的,代码大致如下:
void Task_GUI(void *p_arg)
{
      ......

        hDly=GUI_ExecDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);         //建立窗口,当中有TEXT部件

        while(1)
        {
              .....
                TEXT_SetText(WM_GetDialogItem(hDly,GUI_ID_TEXT6),(const char*)buf);                               //想对TEXT操作,但无法改变内容
                GUI_DispStringAt("ABC123",150,120);                                                                                       //也无法在界面中内容
              .......
                OSTimeDlyHMSM(0, 0, 0, 100,0,&err);       
        }
}

想问下火哥,当一个Dialog窗口建立后如何在外部对他进行操作啊??一定是在回调函数中吗???
回复

使用道具 举报

发表于 2015-6-15 09:13:41 | 显示全部楼层
正常情况下都是在其回调函数里边改的,
http://www.firebbs.cn/thread-8766-1-1.html
不知你下载了例程没有,你可以参考例程:14.ISO-V2_uCOS-III_emWin_DEMO_LED工程里边的c文件:ledapp.c里边的编程
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 14:37:26 | 显示全部楼层
不好意思,火哥,您给的链接好像已经不存在了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 14:40:22 | 显示全部楼层
火哥,不好意思,我还想问个问题:我想学习设计电路和做板,却不知如何下手,能不能给点方向啊???万分感谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-15 17:04:01 | 显示全部楼层
亽亼 发表于 2015-6-15 09:13
正常情况下都是在其回调函数里边改的,
http://www.firebbs.cn/thread-8766-1-1.html
不知你下载了例 ...

火哥,你好,我已经看了ledapp.c的例程,感觉与之前看的例程相似,现在我要做的是把开发板外部实时采集到的数据显示到emWin的界面上,数据我已采集到了(也处理好了),但是我现在无法再emWin中更新,及界面只是最初的形状;就例如要达到如下要求:在开发板之外的矩阵按键中按下一个按键,界面中就要实时的显示一个特定数据一样,我试过在上面贴所说的直接操作,也试过在while(1)函数中发送emWin的信号,即是如下:
void Task_GUI(void *p_arg)
{
      ......
         Message.MsgId  = MSG_CHANGE_MAIN_TEXT;             //Message是个全局变量,在这设置他的ID
        hDly=GUI_ExecDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);         //建立窗口,当中有TEXT部件      

        while(1)
        {
              .....
                   WM_SendMessage(WM_GetClientWindow(hDly), &Message);                         //发送信号,                                                               
              .......
                OSTimeDlyHMSM(0, 0, 0, 100,0,&err);        
        }
}
信号函数:
void _cbCallback(WM_MESSAGE* pMsg)
{
  ......
          switch(pMsg->MsgId)
        {
                case MSG_CHANGE_MAIN_TEXT:                                                    //信号处理函数
                        sprintf(buf,"%4d",Display_Number);
                        TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT6),(const char*)buf);   //在这里改变,但是这样也不行
                        break;
        ......
       }
}
我很想知道emWin的窗口究竟是如何和外界通信的?????回调函数好像只能处理窗口本身的事件,当有窗口期外的部件产生的信号输入时怎么办??希望火哥能指导下,万分感激!!
回复 支持 反对

使用道具 举报

发表于 2015-6-15 17:53:15 | 显示全部楼层
你可以参考ADC例程,就是不到采集开发板上的电位器电压的,手动调节电位器,界面上会有对应的电压值,
你可以看看实现的方法,借鉴用吧
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-22 12:26 , Processed in 0.042440 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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