OpenEdv-开源电子网

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

怎么在主函数中发送变量到窗体,用sendmessage的方式 更新显示

[复制链接]

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2014-7-31
在线时间
6 小时
发表于 2015-1-8 11:36:32 | 显示全部楼层 |阅读模式
5金钱

小弟刚学ucgui不就有个问题请教大家问题如下:比如我想在主函数中在需要的时候通过sendmessage的方式把一个变量的值发送到一个w1窗体中应该怎么实现,如果定时的让w1重绘肯定是可

以实现的,但是那样很不方便,而且重绘的东西比较多,我自己写的一个函数如下
void send_data_to_window(WM_HWIN my_window,int MsgId,int my_data)
{
 WM_MESSAGE my_message;
 my_message.MsgId=MsgId; 
 my_message.hWin=my_window;  
 my_message.Data.v=my_data;
    WM__SendMessage(my_window, &my_message) ;
}
假如w1窗体的回调函数是cb_w1(),如果我想在主函数中把一个固定的变量ad_value 在需要的时候发送的w1窗体上显示实时更新(不需要的话就不要更新),我调用的方法如下,
send_data_to_window(w1,int WM_PAINT,ad_value);然后在回调函数中处理方式如下
void cb_w1(WM_MESSAGE * pMsg)  
{
  switch (pMsg->MsgId)
 {    
  case WM_PAINT: 
   GUI_DispDecAt(pMsg->Data.v,0,0,4);
   break;
      default:
          WM_DefaultProc(pMsg);
     }
}
我的疑问是这种方法为什么不行,需要怎么改?,应该怎么样才能通过主函数往窗体发送变量并更新显示? 求大侠指教,不胜感激,,,,

最佳答案

查看完整内容[请看2#楼]

sendmessage后需要WM_InvalidateWindow()或者发送一个WM_PAINT消息,这样WM_PAINT才会执行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2015-1-8 11:36:33 | 显示全部楼层
sendmessage后需要WM_InvalidateWindow()或者发送一个WM_PAINT消息,这样WM_PAINT才会执行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-9 00:46:12 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2014-7-31
在线时间
6 小时
 楼主| 发表于 2015-1-20 11:44:40 | 显示全部楼层
回复【3楼】holy404290384:
---------------------------------
哦,我那个 my_message.MsgId=MsgId;这个语句写错了,应该是 my_message.MsgId=WM_PAINT ; 但是这样也是不行的,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-8 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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