硬汉嵌入式论坛

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

[emWin] 关于句柄的问题,很疑惑

[复制链接]

36

主题

70

回帖

178

积分

初级会员

积分
178
发表于 2015-3-17 09:40:14 | 显示全部楼层 |阅读模式
我现在项目中用到报警弹窗的效果,窗体在任何界面都要弹出,并且在报警消除后能自动消除,所以这个时候入股我要关闭弹窗,势必要将弹窗的句柄当成全局变量来进行操作。
我把这个弹窗消除的命令放在while(1)中没什么问题,但是,一开始当我把这个弹窗消除放在中断中进行时就会有问题,出现死机,后来实在没办法才将其放在while中进行,至今都没出过问题。
请教各位有没有什么见解。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107104
QQ
发表于 2015-3-17 10:02:53 | 显示全部楼层
怎么消除的,看下这个函数。
回复

使用道具 举报

36

主题

70

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2015-3-17 10:19:21 | 显示全部楼层

回 eric2013 的帖子

eric2013:怎么消除的,看下这个函数。 (2015-03-17 10:02) 
首先比如弹窗的句柄我是定义的全局变量hItem_Alarm ;在弹窗的初始化的地方得到它的句柄hItem_Alarm = pMsg->hWin;然后在别的界面上,如果中断需要弹窗,直接使用弹窗的函数,用的是GUIBuilder生成的。在需要消除的时候使用WM_DeleteWindow(hItem_Alarm);直接消除,由于背后的窗体会重绘所以应该会消失,但是百分之70的时间会死机。我在想是不是不能全局操作窗体或者控件的句柄,但是问题来了,在while中却不会有问题,哪怕时一个窗体的内部的小控件,用全局变量的方式也能操作,且不会死机。这个是跟emwin的机制有关系呢还是跟CPU的利用率有关系。我现在无法确定
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2015-3-17 10:28:42 | 显示全部楼层
建议删除窗口的函数放在 某个回调函数中处理。就是CASE TIMER等。

比如你设定一个定时器,弹出窗口后,开始计时,计时完毕,就可以在消息case中处理。

当然,方便起见,可以把报警窗口在一开始就创建,只是让它隐藏,句柄设定为全局变量。

好像emwin或者其他RTOS中都说明过,中断函数中必须用特别的API。大部分的API是不可以在中断函数中使用的。
回复

使用道具 举报

36

主题

70

回帖

178

积分

初级会员

积分
178
 楼主| 发表于 2015-3-17 10:40:04 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:建议删除窗口的函数放在 某个回调函数中处理。就是CASE TIMER等。

比如你设定一个定时器,弹出窗口后,开始计时,计时完毕,就可以在消息case中处理。

当然,方便起见,可以把报警窗口在一开始就创建,只是让它隐藏,句柄设定为全局变量。
....... (2015-03-17 10:28) 
我也记得哪里有提到过类似的话不知道是不是关于这个的,我找不到现在。
因为界面比较多,如果用case Timer的话我每个界面都得上,所以不是很方便感觉,而且还是用到了全局变量。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 11:29 , Processed in 0.300033 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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