OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6765|回复: 7

对话框遇到的一些问题

[复制链接]

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
发表于 2014-6-25 08:56:08 | 显示全部楼层 |阅读模式
5金钱

请教一个问题,我在VC上做好的界面,移植到板子上就出现了一些问题.

这个由好几个界面组成的,每个界面由几个控件组成,没有触屏,靠外部按键。

1、有时候屏幕上的一个按键明明显示的获得了焦点,但是按ENTER的时候没反应,要按TAB键改变焦点,这个按键再次获得焦点的时候 对ENTER键就有反应了。

   这种情况主要出现在关闭了一个对话框,然后设置聚焦对话框之后。比如所Dialog2 关闭的时候写GUI_EndDialog(hDialog2, 0);WM_SetFocus(hDialog1);

  在关闭Dialog2之后,Dialog1获得焦点,但屏幕上显示的是Dialog1上的BUTTON0聚焦了。

2、有一个对话框的文本框和两个按钮显示不出来了,按TAB键把控件聚焦之后才显示的出来,然后这个对话框关闭之后,之后的对话框都和那个对话框一个样子了。

我表述的也不是很清楚,不知道有没有大婶指点一二

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-6-25 16:33:28 | 显示全部楼层
我觉得可能还是阻塞对话框和非阻塞对话框的问题?
今天看了一下使用手册,
 A blocking dialog blocks the thread of execution. It has input focus by default and
must be closed by the user before the thread can continue. A blocking dialog does
not disable other dialogs shown at the same time. With other words a blocking dialog
is not a modal dialog. Blocking means, the used functions (GUI_ExecDialogBox() or
GUI_ExecCreatedDialog()) does not return until the dialog is closed.
A non-blocking dialog, on the other hand, does not block the calling thread -- it
allows the task to continue while it is visible. The function returns immediately after
creating the dialog.

尤其是With other words a blocking dialog is not a modal dialog,不明白这句话什么意思?
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-6-25 19:45:31 | 显示全部楼层
回复【2楼】XavierZhang:
---------------------------------
“With other words a blocking dialog is not a modal dialog”意思是阻塞对话框,不是模态对话框,上面已经说了,阻塞对话框不会禁止其他对话框的显示
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-6-26 08:22:59 | 显示全部楼层
回复【3楼】xiaoyan:
---------------------------------
那阻塞对话框和模态对话框还有什么区别呢
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-6-26 22:27:23 | 显示全部楼层
回复【4楼】XavierZhang:
---------------------------------
这里的模态对话框应该是必须先响应,否则不会响应接下来的窗体。比如那种弹出的确认框。
而在UCGUI中,阻塞对话框似乎还可以响应其他的窗体,这是我的猜想,你用uCGUI验证下
吧,看看阻塞和不阻塞到底有什么区别。
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2014-7-8 14:33:23 | 显示全部楼层
关于这一句:“在关闭Dialog2之后,Dialog1获得焦点,但屏幕上显示的是Dialog1上的BUTTON0聚焦了。”

在μc/GUI中,作为构建DIALOG基础的FRAME或者WINDOW都是不会获得焦点的,当他们获得焦点时会自动将焦点转移到DIALOG上面的其他控件上面(这些控件都是FRAME、WINDOW的子控件,与FRAME、WINDOW一起构成DIALOG)

至于其他问题,可能是代码问题
努力,前进。
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-7-9 11:02:22 | 显示全部楼层
回复【6楼】5498折戟沉沙:
---------------------------------
嗯,确实是这样的。问题就是有时候按钮明明聚焦了,按了ENTER 键没反应。但是有时候按下Enter就可以。
回复

使用道具 举报

29

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2015-1-12
在线时间
65 小时
发表于 2016-5-5 17:18:41 | 显示全部楼层
代码传上来,帮你看看
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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