硬汉嵌入式论坛

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

[emWin] emwin重绘后界面不更新

[复制链接]

5

主题

95

回帖

110

积分

初级会员

积分
110
发表于 2019-11-9 17:24:46 | 显示全部楼层 |阅读模式
本帖最后由 xiaomeng 于 2019-11-9 17:44 编辑

我在调试emwin时,发现button重绘后界面不更新具体如下:
我设置了一个定时器,定时器每隔一段时间发送按键重绘消息 :
pMsg->MsID=WM_PAINT;
pMsg->hWin = WM_GetDialogItem(pMsg->hWin,ID_BUTTON);
WM_SendMessage(pMsg-hWin,pMsg);

仿真调试可以进入按键的重绘函数内部,但是界面没有改变;正常情况按键的颜色会闪烁
想知道什么原因造成的??
IMG_20191109_173838.jpg
IMG_20191109_173954.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115785
QQ
发表于 2019-11-9 17:29:20 | 显示全部楼层
图片没有发上来?

直接发代码也行,仅emWin部分即可
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-11-9 17:33:38 | 显示全部楼层
eric2013 发表于 2019-11-9 17:29
图片没有发上来?

直接发代码也行,仅emWin部分即可

我软件不在同一台电脑上,所以没法复制
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-11-9 17:53:44 | 显示全部楼层
eric2013 发表于 2019-11-9 17:29
图片没有发上来?

直接发代码也行,仅emWin部分即可

感觉好像是通过这种主动发消息的方式调用重绘函数之后,没有调用GUI_delay一样,不会刷新;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115785
QQ
发表于 2019-11-9 18:08:20 | 显示全部楼层
Send函数没有发送过去,应该是你的参数传递有问题。

简单些,将按钮句柄弄成全局句柄。

然后调用函数WM_ValidateWindow()填入句柄即可。
还是不行,直接上完整的emWin部分代码,我帮你改。
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-11-9 18:14:13 | 显示全部楼层
现在可以了,发送消息前先调用 WM_InvalidateWindow()
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
 楼主| 发表于 2019-11-9 18:15:43 | 显示全部楼层
eric2013 发表于 2019-11-9 18:08
Send函数没有发送过去,应该是你的参数传递有问题。

简单些,将按钮句柄弄成全局句柄。

多谢,的确调用函数WM_ValidateWindow()就可以了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 09:32 , Processed in 0.305032 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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