硬汉嵌入式论坛

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

[μCGUI] 按钮名或文本内容在切换界面不显示的问题?

[复制链接]

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
发表于 2015-5-27 09:30:39 | 显示全部楼层 |阅读模式
各位高手:
       我的问题是这样的,在void PaintDialog_angct(WM_MESSAGE * pMsg)函数里,我会通过一个变量的内容,来判断一些按钮显示的内容。现在就是偶尔在进入这个界面时,按钮的内容不显示。后来我把GUI的动态内存放大#define GUI_ALLOC_SIZE            32000 ,效果好很多,但没有根除。所以请高手知道问题所在的,请指教。谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2015-5-27 15:31:09 | 显示全部楼层
估计是这个函数有问题,方便的话,可否贴些内容看看。
void PaintDialog_angct(WM_MESSAGE * pMsg)
回复

使用道具 举报

5

主题

69

回帖

5

积分

初级会员

积分
5
发表于 2015-5-29 15:46:11 | 显示全部楼层
估计是你那个变量是全局的吧?没做好临界访问
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2015-6-10 15:28:27 | 显示全部楼层

回 eric2013 的帖子

eric2013:估计是这个函数有问题,方便的话,可否贴些内容看看。
void PaintDialog_angct(WM_MESSAGE * pMsg) (2015-05-27 15:31) 
   if(Work.MSign)
        {
      BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),"Counter-Clockwise");
     }
   else  
     {
      BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),"Clockwise");
     }
请教临界访问如何实现。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2015-6-10 16:52:16 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:   if(Work.MSign)
        {
      BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),"Counter-Clockwise");
     }
....... (2015-06-10 15:28) 
这个是在WM_PAINT消息里面调用的吗
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2015-6-11 09:17:02 | 显示全部楼层

回 eric2013 的帖子

eric2013:估计是这个函数有问题,方便的话,可否贴些内容看看。
void PaintDialog_angct(WM_MESSAGE * pMsg) (2015-05-27 15:31) 
对,是在PaintDialog函数里调用的,请指教。
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2015-6-11 13:54:25 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:对,是在PaintDialog函数里调用的,请指教。 (2015-06-11 09:17) 
由于WM_PAINT消息在很多时候是没有调用的,所以有时候不刷新。WM_PAINT只适合放入一些2D画图,和一些无需刷新的字符。

有2个办法:
办法1: 请把BUTTON_SetText放在更改work.msign的函数中去。WM_PAINT中不要放控件函数。因为控件的函数会自动刷新界面,

方法2: 调用settext的函数后,用个invalidate类的函数,强制刷新界面(注意不能用WM_Paint()函数)。这个效果一般不好,会看到闪烁。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2015-6-15 08:24:18 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:由于WM_PAINT消息在很多时候是没有调用的,所以有时候不刷新。WM_PAINT只适合放入一些2D画图,和一些无需刷新的字符。

有2个办法:
办法1: 请把BUTTON_SetText放在更改work.msign的函数中去。WM_PAINT中不要放控件函数。因为控件的函数会自动刷新界面,
....... (2015-06-11 13:54) 
高手,我是在创建这个界面的时候让按扭根据work.msign显示不同的内容。不是在更改work.msign的时候。所以请指教。
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2015-6-15 17:25:49 | 显示全部楼层

回 fanyanxi 的帖子

fanyanxi:高手,我是在创建这个界面的时候让按扭根据work.msign显示不同的内容。不是在更改work.msign的时候。所以请指教。 (2015-06-15 08:24) 
你的思路还没有转换过来。。。
你转换work.msign的时候就可以使用button_settext函数。 界面刷新是自动的。

如果放在WM_PAINT中,反而不行的。
回复

使用道具 举报

35

主题

73

回帖

343

积分

高级会员

超越昨天

积分
343
QQ
 楼主| 发表于 2015-6-25 15:42:45 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:你的思路还没有转换过来。。。
你转换work.msign的时候就可以使用button_settext函数。 界面刷新是自动的。

如果放在WM_PAINT中,反而不行的。
....... (2015-06-15 17:25) 
请问刚上电显示的时候?这个时候我还没改变work.msign的时候怎么办?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 08:07 , Processed in 0.179273 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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