硬汉嵌入式论坛

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

[emWin] 关于emWin关闭窗口后,无法正常释放内存的问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
发表于 2013-5-27 14:52:45 | 显示全部楼层 |阅读模式
      关于这个问题,今天做了一个测试,发现删除对话框以后,的确有内存缺失,后来进一步的
测试,发现是因为有些控件没有应为对话框的删除而删除。所以平时使用的时候,切记通过这个
函数查看下GUI_ALLOC_GetNumFreeBytes()


比如下面这个图,点击左上角的X号,并不能完全的释放申请的动态内存,需要调用如下才能删除
GRAPH_DATA_YT_Delete(ahData1[0]);
GRAPH_DATA_YT_Delete(ahData1[1]);
GRAPH_DATA_YT_Delete(ahData1[2]);                 
GRAPH_DATA_YT_Delete(ahData2[0]);
GRAPH_DATA_YT_Delete(ahData2[1]);
GRAPH_DATA_YT_Delete(ahData2[2]);                  
GRAPH_SCALE_Delete(hScaleH);
GRAPH_SCALE_Delete(hScaleV);
3.jpg
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2014-1-27 09:46:17 | 显示全部楼层
5.12手册里有一句:附加到图形小工具后,就不需要通过应用程序来删除数据和刻度对象,而由图形小工具完成。
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
发表于 2014-11-26 08:32:23 | 显示全部楼层
确实是这样楼主,怎样解决呢?再跟你请教一下,你这个framwin的背景色是怎么做的?FRAMEWIN_SetClientColor(hWin,GUI_DARKGRAY)函数只能添加纯色啊。
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
发表于 2014-11-26 08:33:31 | 显示全部楼层
换肤吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2014-11-26 09:46:07 | 显示全部楼层

回 yuanfp 的帖子

yuanfp:确实是这样楼主,怎样解决呢?再跟你请教一下,你这个framwin的背景色是怎么做的?FRAMEWIN_SetClientColor(hWin,GUI_DARKGRAY)函数只能添加纯色啊。 (2014-11-26 08:32) 
在WM_PAINT消息里面搞。
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2015-1-27 17:36:23 | 显示全部楼层
记号,学习了。。。谢谢
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2015-1-27 18:05:02 | 显示全部楼层
case ID_BUTTON_0: // Notifications sent by '绘图刷新'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
        GRAPH_DATA_XY_Delete(hData);        
        hData =  GRAPH_DATA_XY_Create(GUI_BLUE, 10, _aPoint, 0);
        GRAPH_DATA_XY_SetPenSize(hData, 1);
        GRAPH_DATA_XY_SetPointVis(hData, 1);
        GRAPH_AttachData(WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0), hData);
        
        break;
      }
      break;

硬汉大哥,。我现在这个绘图每刷新一次可用内存就会减少,。画图会越来越卡,。求指点
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2015-1-27 18:22:33 | 显示全部楼层

回 xiaosir 的帖子

xiaosir:    case ID_BUTTON_0: // Notifications sent by '绘图刷新'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
& .. (2015-01-27 18:05) 
问题解决了,用了GRAPH_DATA_XY_Clear(hData) 清空数据就可以了 //这函数官方数据手册上没有描述?只有GRAPH_DATA_YT_Clear,在官方的例程中才看到的,无语!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2015-1-27 21:53:31 | 显示全部楼层

回 xiaosir 的帖子

xiaosir:问题解决了,用了GRAPH_DATA_XY_Clear(hData) 清空数据就可以了 //这函数官方数据手册上没有描述?只有GRAPH_DATA_YT_Clear,在官方的例程中才看到的,无语!  (2015-01-27 18:22) 
有的,看新版的手册。
回复

使用道具 举报

7

主题

40

回帖

61

积分

初级会员

积分
61
发表于 2018-7-30 23:39:30 | 显示全部楼层
删除这个控件的数据在什么消息里面删除?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2018-7-31 02:13:42 | 显示全部楼层
桥段 发表于 2018-7-30 23:39
删除这个控件的数据在什么消息里面删除?

消息WM_DELETE
回复

使用道具 举报

7

主题

40

回帖

61

积分

初级会员

积分
61
发表于 2018-7-31 10:16:50 | 显示全部楼层

在graph这个控件的父窗口的WM_DELETE中删除?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2018-7-31 10:22:02 | 显示全部楼层
桥段 发表于 2018-7-31 10:16
在graph这个控件的父窗口的WM_DELETE中删除?

是的,比较省事,你关闭父窗口时,就自动关闭Graph了
回复

使用道具 举报

7

主题

40

回帖

61

积分

初级会员

积分
61
发表于 2018-7-31 10:25:38 | 显示全部楼层
Framewin窗口一点关闭按钮就这样是怎么怎么回事,百度了一下都是九唔搭八的

捕获jgh.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2018-8-1 01:33:56 | 显示全部楼层
桥段 发表于 2018-7-31 10:25
Framewin窗口一点关闭按钮就这样是怎么怎么回事,百度了一下都是九唔搭八的

你的程序设计出问题了,方便的话,看下你的程序。
回复

使用道具 举报

7

主题

40

回帖

61

积分

初级会员

积分
61
发表于 2018-8-5 16:09:45 | 显示全部楼层
eric2013 发表于 2018-8-1 01:33
你的程序设计出问题了,方便的话,看下你的程序。

我在模拟器上学习试验,我把代码发上来了

emwin_moniqi5.24.zip

24 MB, 下载次数: 101

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2018-8-6 02:46:02 | 显示全部楼层
桥段 发表于 2018-8-5 16:09
我在模拟器上学习试验,我把代码发上来了

已经帮你测试了,可以先换个5.3x或者5.48的模拟器版本测试下是否有这个问题。

然后看你的程序,是这句话造成的,按说没问题的
GRAPH_AttachData(hItem, ahData);

按说是没问题的,不知道这个模拟器为什么会提示,你看我的这个二代示波器中电压测量界面就是用的这个,是这么删除的,一直在用,没问题
http://www.armbbs.cn/forum.ph ... 5785&extra=page%3D1

看文件DSO_AdcDlg.c
回复

使用道具 举报

7

主题

40

回帖

61

积分

初级会员

积分
61
发表于 2018-8-6 11:31:39 | 显示全部楼层
eric2013 发表于 2018-8-6 02:46
已经帮你测试了,可以先换个5.3x或者5.48的模拟器版本测试下是否有这个问题。

然后看你的程序,是这句 ...

好的ヽ( ̄▽ ̄)و     
3Q3Q
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 06:13 , Processed in 0.232162 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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