硬汉嵌入式论坛

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

[emWin] 连续对话框要怎么实现

[复制链接]

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2016-8-24 14:03:25 | 显示全部楼层 |阅读模式
想要通过页面中的BUTTON来实现连续多个的弹框依次弹出。
比如,在FRAME0中有一个BUTTON0,单击后,会弹出一个对话框FRAME1。
在FRAME1中有2个BUTTON,分别弹出不同的对话框FRAME2和FRAME3。
在单击FRAME1中的BUTTON后,FRAME1要消失,要生成FRAME2/FRAME3

其实这个流程理解起来也很简单,就是通过BUTTON来选择不同的执行流程,弹出不同的提示框。
但是emwin的具体执行流程和想象的还不太一样。

我在FRAME0中的BUTTON0的NOTIFY_PARENT消息中调用GUI_CreateDialogBox()非阻塞式的创建函数时,能显示出FRAME2/FRAME3。
但是,是先显示FRAME2/FRAME3,在处理完成后,再显示的FRAME1。顺序错了。
而改成用GUI_ExecDialogBox()阻塞式创建时,能实现这个流程,但文档上说在回调函数中调用阻塞式的话,有可能会出错。

有没有别的好方法来实现这个流程呢。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-25 01:37:34 | 显示全部楼层
设置窗口的模态特性,是否满足你的要求,试试看。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-25 09:19:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:设置窗口的模态特性,是否满足你的要求,试试看。 (2016-08-25 01:37)
应该是对话框的创建顺序和调用的程序位置不对造成的。
按说,这种连续的对话框应该是很常见的呀。
emwin好像也没看到出这种功能的例程呀。
感觉这个问题的关键是,emwin的窗口创建机制问题:
如果使用非阻塞式的GUI_CreateDialogBox()来创建,那么所有被创建的窗口都是在调用GUI_Exec()时一同被创建的。
像这种有顺序的出现窗口,应该是用阻塞式的GUI_ExecCreatedDialog()来创建,创建一个,执行一个,然后再创建下一个。

实测之后,也证实了这一想法,用非阻塞式创建时,在同一位置创建2个窗口,分不同顺序创建的结果都是同时出现窗口。
有阻塞式创建时,才能顺序的出现2个窗口。

但还是文档上所说的,在回调函数中用阻塞式的话,还是有出错的可能吧。
虽然在我测试的实际应用中没有出现问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-26 01:49:44 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:应该是对话框的创建顺序和调用的程序位置不对造成的。
按说,这种连续的对话框应该是很常见的呀。
emwin好像也没看到出这种功能的例程呀。
感觉这个问题的关键是,emwin的窗口创建机制问题:
....... (2016-08-25 09:19) 
在回调函数里面调用阻塞对话框属于嵌套调用,如果你的这个阻塞窗口不能够正确返回的话,系统容易死掉。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-8-26 08:51:41 | 显示全部楼层

回 eric2013 的帖子

eric2013:在回调函数里面调用阻塞对话框属于嵌套调用,如果你的这个阻塞窗口不能够正确返回的话,系统容易死掉。 (2016-08-26 01:49) 
那就是说,其实用阻塞式创建这样一个简单的对话框问题也不大?
但关键还有一些其他外部的操作要做呀,比如写入参数到EEPROM里面,这也要时间呀,还要等待呀。
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
发表于 2016-9-5 17:15:22 | 显示全部楼层
请问一下怎么设计子窗口啊? 从主界面中点击一个button进入子界面,再点击子界面中的一个button返回主界面。谢谢。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2016-9-5 17:46:37 | 显示全部楼层

回 坚持再坚持 的帖子

坚持再坚持:请问一下怎么设计子窗口啊? 从主界面中点击一个button进入子界面,再点击子界面中的一个button返回主界面。谢谢。 (2016-09-05 17:15) 
最简单的就是直接在主界面的NOTIFY_PARENT消息里面找到BUTTON释放的消息咯,在里面直接创建就行了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 06:59 , Processed in 0.645442 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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