硬汉嵌入式论坛

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

[emWin] 论坛新手求助,阻塞式对话框的问题

[复制链接]

7

主题

24

回帖

45

积分

新手上路

积分
45
发表于 2021-6-22 14:53:32 | 显示全部楼层 |阅读模式
我用对话框创建了一个框架窗口,是一个子窗口,我的想法是让它浮窗在父窗口之上,等待子窗口设置完毕后才能去其他窗口,于是建立一个阻塞式对话框作为子窗口。但是程序卡在这里不往下运行了,因此按键值没法读取,按键值读的不是用中断,所以没法在回调函数的case WM_KEY: 中关闭对话框,请问有解决办法么?还是我有错误,导致程序卡在阻塞对话框了。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-6-22 15:05:50 | 显示全部楼层
将子窗口设置模态即可,可以发送自定义消息关闭

回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:12:56 | 显示全部楼层
eric2013 发表于 2021-6-22 15:05
将子窗口设置模态即可,可以发送自定义消息关闭

那就是阻塞对话框无法关闭了?
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:14:33 | 显示全部楼层
eric2013 发表于 2021-6-22 15:05
将子窗口设置模态即可,可以发送自定义消息关闭

对话框的阻塞式对话框没法关闭么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-6-22 15:25:48 | 显示全部楼层
甜瓜 发表于 2021-6-22 15:14
对话框的阻塞式对话框没法关闭么?

可以关闭啊,但 阻塞式对话框不会禁用所显示的其他对话框, 换句话说,阻塞式对话框并非模态对话框, 设置模态需要专门调用函数WM_MakeModal 进行设置
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:28:17 | 显示全部楼层
eric2013 发表于 2021-6-22 15:25
可以关闭啊,但 阻塞式对话框不会禁用所显示的其他对话框, 换句话说,阻塞式对话框并非模态对话框, 设 ...

谢谢技术哥的耐心回复,安富莱的历程看了一上午,分析不出来原因,程序卡死在GUI_ExecDialogBox(...);下面的程序无法执行,所以没法关闭。
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:36:09 | 显示全部楼层
eric2013 发表于 2021-6-22 15:25
可以关闭啊,但 阻塞式对话框不会禁用所显示的其他对话框, 换句话说,阻塞式对话框并非模态对话框, 设 ...

起始我的问题就是,设置了阻塞式对话框,程序不往下运行了,导致我的虚拟按键没法读出,所以无法关闭该对话框。阻塞的话,是卡死在这句GUI_ExecDialogBox(...)调用么,不合理啊?emWIN底层驱动不会这么写的吧。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-6-22 15:36:30 | 显示全部楼层
甜瓜 发表于 2021-6-22 15:28
谢谢技术哥的耐心回复,安富莱的历程看了一上午,分析不出来原因,程序卡死在GUI_ExecDialogBox(...); ...

发自定义消息给这个这个阻塞对话框。
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:41:21 | 显示全部楼层
eric2013 发表于 2021-6-22 15:36
发自定义消息给这个这个阻塞对话框。

程序不顺序往下执行了,这怎么去给他发消息呢?我这个问题有点奇怪,我是调用GUI_ExecDialogBox(...)这个函数,程序不往下执行啊?!仿真出现图形后,不再进入回调函数,不知道程序跑到哪里去了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-6-22 15:45:01 | 显示全部楼层
甜瓜 发表于 2021-6-22 15:41
程序不顺序往下执行了,这怎么去给他发消息呢?我这个问题有点奇怪,我是调用GUI_ExecDialogBox(...)这 ...

发送自定义消息给阻塞窗口后,自定义消息是在这个对话框的回调函数里面处理的。。。。
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-22 15:56:08 | 显示全部楼层
eric2013 发表于 2021-6-22 15:45
发送自定义消息给阻塞窗口后,自定义消息是在这个对话框的回调函数里面处理的。。。。

谢谢硬汉哥哥,实在听不懂你说的信息,我现在调用了对话框程序后,它阻塞了整个程序运行,我猜想是类似死循环那种。因此,下面我的自定义消息,全部没法实现了,DEBUG根本就跑不到自定义程序,导致的无法关闭,我的知识理解就到这里了,刚接触emwin。你说的自定义消息,它问题是显示出来阻塞对话框后,就不再进入回调函数了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-6-22 16:21:33 | 显示全部楼层
甜瓜 发表于 2021-6-22 15:56
谢谢硬汉哥哥,实在听不懂你说的信息,我现在调用了对话框程序后,它阻塞了整个程序运行,我猜想是类似死 ...

下载这个例子吧,现成的阻塞对话框,然后实体按键发送消息控制的。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834

1.png


回复

使用道具 举报

7

主题

26

回帖

47

积分

新手上路

积分
47
发表于 2021-6-22 19:10:30 来自手机 | 显示全部楼层
把按键用中断检测,或放在不同的任务中
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-23 11:30:05 | 显示全部楼层
dwj00 发表于 2021-6-22 19:10
把按键用中断检测,或放在不同的任务中

对啊,按键不是中断处理的,只是顺序执行。阻塞之后没法运行后面的任务,所以回调函数里面的退出改对话框无效。我现在就是疑问,这个阻塞式对话框是类似 WHILE(!true)的结构么?
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-23 13:52:02 | 显示全部楼层
eric2013 发表于 2021-6-22 16:21
下载这个例子吧,现成的阻塞对话框,然后实体按键发送消息控制的。
http://www.armbbs.cn/forum.php?mod ...

放弃了,阻塞式对话框会卡死程序,无法顺序执行下一步,没法处理。
回复

使用道具 举报

7

主题

24

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-6-23 14:49:35 | 显示全部楼层
eric2013 发表于 2021-6-22 16:21
下载这个例子吧,现成的阻塞对话框,然后实体按键发送消息控制的。
http://www.armbbs.cn/forum.php?mod ...

官网查了下,没救了,这函数放在API里面没意义啊,相当于创建个静态画面,啥都干不了。

f26b66a1ae56190c73f456d68cbcae0.png
回复

使用道具 举报

0

主题

26

回帖

26

积分

新手上路

积分
26
发表于 2023-10-31 18:08:44 来自手机 | 显示全部楼层
eric2013 发表于 2021-6-22 15:05
将子窗口设置模态即可,可以发送自定义消息关闭

我有一个问题,还请解惑

16987468865951024659153620532443.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:20 , Processed in 0.327381 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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