打印
[STM32F1]

STemwin库显示时部分控件会自动消失

[复制链接]
1603|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhenykun|  楼主 | 2021-10-11 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F103控制一个LCD触摸屏,使用的是STMemwin的库,但是显示的时候有一个元素会存在显示不出来,偶然性的有时候可以有时候不可以。

使用特权

评论回复
沙发
wyjie| | 2021-10-11 23:12 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
板凳
zhenykun|  楼主 | 2021-10-11 23:14 | 只看该作者
然后我在该元素赋值以后使用GUI-DELAY进行刷新了,能够显示出来

使用特权

评论回复
地板
zhenykun|  楼主 | 2021-10-11 23:16 | 只看该作者
但是,当程序跑完之后这个元素却消失了。

使用特权

评论回复
5
zhenykun|  楼主 | 2021-10-11 23:18 | 只看该作者
在显示过程中没有对该元素进行隐藏和删除处理

使用特权

评论回复
6
heweibig| | 2021-10-11 23:21 | 只看该作者
当程序跑完后是指GUI_Delay()延迟结束还是指其他意思?

使用特权

评论回复
7
lizye| | 2021-10-11 23:24 | 只看该作者
你在主循环里或者开个定时器,调用GUI_Exec()这个函数试一试。

使用特权

评论回复
8
spark周| | 2021-10-11 23:27 | 只看该作者
整个界面程序跑完之后会有一个GUI_Delay(),我使用但不运行,每次当整个函数执行完之后,那个显示的元素就不见了。

使用特权

评论回复
9
zhenykun|  楼主 | 2021-10-11 23:30 | 只看该作者
单步

使用特权

评论回复
10
zhenykun|  楼主 | 2021-10-11 23:35 | 只看该作者
不行啊,就算添加了这个刷新函数一样刷新不出来。我之前试过,刚刚又试了一下,还是不行。

使用特权

评论回复
11
wyjie| | 2021-10-11 23:37 | 只看该作者
这个消失的是什么控件?

使用特权

评论回复
12
wenfen| | 2021-10-11 23:39 | 只看该作者
还有,在跑完界面代码之后你运行的是什么程序?

使用特权

评论回复
13
zhenykun|  楼主 | 2021-10-11 23:41 | 只看该作者
消失的是一个文字显示控件,界面跑完之后在另一个任务里面处理一下AD采集和触摸检测的操作。

使用特权

评论回复
14
dingy| | 2021-10-11 23:45 | 只看该作者
这个就不知道啥原因了。我现在正在玩的,在资源列表中创建控件,在回调函数中完成初始化,目前没遇到啥问题。

使用特权

评论回复
15
supernan| | 2021-10-11 23:47 | 只看该作者

资源列表:
{ TEXT_CreateIndirect, "Text", ID_TEXT_11, 82, 185, 26, 25, 0, 0x64, 0 },
{ TEXT_CreateIndirect, "Text", ID_TEXT_12, 212, 185, 20, 25, 0, 0x64, 0 },

初始化:
    hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_12);
    TEXT_SetTextColor(hItem, GUI_MAKE_COLOR(0x00FFFFFF));
    TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
    TEXT_SetFont(hItem, &GUI_Fontsongti16);
    p_name = zhankongbi;
    TEXT_SetText(hItem, p_name);

使用特权

评论回复
16
zhenykun|  楼主 | 2021-10-11 23:49 | 只看该作者
嗯嗯,我就是这么做的。不过现在我貌似知道问题在哪了,就是不明白什么原因。

使用特权

评论回复
17
zhenykun|  楼主 | 2021-10-11 23:50 | 只看该作者
我的A窗口是建立在B窗口上的,而此时B窗口的定时器还在运行,所以有可能是B窗口的定时器影响了,因为我每次将此定时器关闭就好了。

使用特权

评论回复
18
zhenykun|  楼主 | 2021-10-11 23:52 | 只看该作者
创建A窗口同时将B窗口删除掉,这样既就不会影响A窗口了,也能正常显示。只是要调整一下B窗口里面的内容,使其不被影响。

没明白,是什么原因。。。。

使用特权

评论回复
19
zhanghqi| | 2021-10-11 23:56 | 只看该作者
窗口切换的时候先调用GUI_EndDialog(pMsg->hWin, 0)函数来关闭当前窗口,然后再调用CreateWindow()创建新的窗口。

使用特权

评论回复
20
heweibig| | 2021-10-11 23:58 | 只看该作者
如果定时器里开的有当前窗口的任务,比如说数据刷新,那么在关闭当前窗口之前必须先关闭定时器或者结束定时器里本窗口的相关任务,要不然窗口已经关闭

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

粉丝