硬汉嵌入式论坛

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

[ThreadX全家桶] GUIX弹出对话框问题

[复制链接]

17

主题

88

回帖

139

积分

初级会员

积分
139
发表于 2021-3-5 10:04:24 | 显示全部楼层 |阅读模式
如题,本人想在主窗口的基础上想弹出一个对话框,并且屏蔽主界面的事件(即点击主界面无效,只有关闭了对话框才有效。)
在GUIX的文档中看到gx_window_execute可以创建模态对话框。
利用gx_widget_attach,gx_window_execute弹出对话框会一闪而过。
请问是什么原因所至?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-3-5 10:24:07 | 显示全部楼层
有时间我试试。
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
 楼主| 发表于 2021-3-5 10:42:46 | 显示全部楼层
eric2013 发表于 2021-3-5 10:24
有时间我试试。

搞不太懂,我看了_gx_window_execute函数,里面的最后一句是_gx_widget_detach,应该就是这一句,让对话框失去了焦点。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2021-3-5 10:54:58 | 显示全部楼层
主窗口要去掉获取焦点的勾选框。

QQ图片20210305104906.png
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2021-3-5 10:58:02 | 显示全部楼层
into 发表于 2021-3-5 10:42
搞不太懂,我看了_gx_window_execute函数,里面的最后一句是_gx_widget_detach,应该就是这一句,让对话框 ...

detach 是在退出弹出框的时候才会执行的,不退出的话,弹出框就是个死循环。
所以不是这个函数的原因,是不知道什么原因,导致焦点还是被设置到主窗口上了,你把主窗口这是成不可获取焦点就能解决这个问题。
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
 楼主| 发表于 2021-3-5 11:25:18 | 显示全部楼层
ihavedone 发表于 2021-3-5 10:58
detach 是在退出弹出框的时候才会执行的,不退出的话,弹出框就是个死循环。
所以不是这个函数的原因, ...

主界面的焦点我是没勾上的,并且我在gx_window_execute里面打了断点,确实是执行了gx_widget_detach,gx_widget_detach这条函数并没有在循环体内。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2021-3-5 11:49:10 | 显示全部楼层
into 发表于 2021-3-5 11:25
主界面的焦点我是没勾上的,并且我在gx_window_execute里面打了断点,确实是执行了gx_widget_detach,gx_w ...

那就是你弹出框的代码逻辑问题,确实是退出了弹出框。

你看看你的弹出框的回调函数,返回 0 表示继续执行,返回 非0 表示退出弹出框。
你看看在哪里返回了 非0 值。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2021-3-5 11:54:58 | 显示全部楼层
into 发表于 2021-3-5 11:25
主界面的焦点我是没勾上的,并且我在gx_window_execute里面打了断点,确实是执行了gx_widget_detach,gx_w ...

QQ图片20210305114730.png

这个函数里有个循环,只要 return_code 为 0 就会一直循环,不会执行到后面的 detach 函数。
所以你这里执行到了 detach ,肯定是 return_code 不为 0 了。
你看看你的弹出框事件回调函数, 是不是哪里返回了 非0 值。
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
 楼主| 发表于 2021-3-5 12:03:35 | 显示全部楼层
ihavedone 发表于 2021-3-5 11:54
这个函数里有个循环,只要 return_code 为 0 就会一直循环,不会执行到后面的 detach 函数。
所以你 ...

我明白了,gx_window_execute接受到了GX_EVENT_TIMER事件导致退出了循环。
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
 楼主| 发表于 2021-3-5 12:10:02 | 显示全部楼层
ihavedone 发表于 2021-3-5 11:54
这个函数里有个循环,只要 return_code 为 0 就会一直循环,不会执行到后面的 detach 函数。
所以你 ...

好了,我在它的父父窗口,有开启一个定时器,被gx_window_execute接收到了,导致退出了。
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
 楼主| 发表于 2021-3-5 12:10:31 | 显示全部楼层
ihavedone 发表于 2021-3-5 11:54
这个函数里有个循环,只要 return_code 为 0 就会一直循环,不会执行到后面的 detach 函数。
所以你 ...

感谢大兄弟!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 06:41 , Processed in 0.258953 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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