硬汉嵌入式论坛

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

[emWin] MENU_CreateEx 菜单消失了

[复制链接]

2

主题

5

回帖

11

积分

新手上路

积分
11
发表于 2016-4-1 17:44:46 | 显示全部楼层 |阅读模式
请教各位高人,在用emwin+ucosII 模拟xp文件夹界面(上菜单项  左侧目录树,右侧文件图标)过程中
       我用GUI_CreateDialogBox创建了窗体,在窗体中MENU_CreateEx创建了主菜单,MENU_AddItem创建子菜单项,FRAMEWIN_AddMenu添加主菜单
      while(1) {
            hWin = GUI_CreateDialogBox(...);
            ...
            ...(添加button, treeview控件)
            ...
          //-----添加菜单------------------------------------------------------
         ...

    //
    // Createmain menu
    //
    hMenu = MENU_CreateEx(0, 0, 0, 0,WM_UNATTACHED, 0, MENU_CF_HORIZONTAL, ID_MENU);
    //
    // Createsub menus
    //
    hMenuFile = MENU_CreateEx(0, 0,0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
    hMenuEdit = MENU_CreateEx(0, 0,0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
    hMenuHelp = MENU_CreateEx(0, 0,0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
    hMenuRecent = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0,MENU_CF_VERTICAL, 0);


    _AddMenuItem(hMenu, hMenuFile, "File", 0, 0);    _AddMenuItem(hMenu, hMenuEdit, "Edit", 0, 0);    _AddMenuItem(hMenu, hMenuHelp, "Help", 0, 0);

    FRAMEWIN_AddMenu(hParent, hMenu);
       ...
       //----------------------------------------------------------
           GUI_DELAY(100ms);
            FRAMEWIN_Delete(hWin);
     }
     开始运行<10次 可以看到界面正常,所有控件都有显示,没有异常闪烁。
     时间一长,整个menu菜单就都不显示了,而且treeview的所有文件夹项图标在有动作时不停闪烁。但button,treeview控件都还在,是咋回事呢?
     我试着把创建菜单的语句屏蔽了,除了不显示menu菜单,其他都正常了 treeview项图标有动作时也不闪烁了... ...


     请教高人指点,创建dialog menu 删除dialog 造成了泄露么


     新人,没啥收藏,无法提供奖励 见谅!
     
      
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-4-1 18:10:52 | 显示全部楼层
跟踪了下,MENU_CreateEx返回了0值。 对比查看ucgui3.98的源码:
MENU_CreateEx{
   ...
   WM_CreateWindowAsChild(...);
   ...
}
WM_CreateWindowAsChild{
     ...
     GUI_ALLOC_AllocZero处返回0,内存不够了?
     ...
}

是哪里造成了泄露么,开始还能跑10几圈显示正常呢?   
是创建了dialog treeview button menu后,删除dialog时 还需要删除控件么
不清楚资源是如何释放的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2016-4-2 09:25:14 | 显示全部楼层
删除对话框前先删除下Menu菜单试试,emWin的这个Menu菜单设计的的确有些问题,不好用。
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-4-2 19:17:34 | 显示全部楼层
是的  谢谢eric。而且需要把MENU_CreateEx创建的菜单全删除了才行,起初只删除了hMenu,结果还是泄露内存。

          另,再请教下,我在gui_x_os.c中已实体化了GUI_X_ErrorOut  GUI_X_Warn  GUI_X_Log,
                  同时开启#define GUI_DEBUG_LEVEL               (5)

          想着打印GUI的调试信息的   怎么没效果呢  啥信息都没有,这几个函数我做了测试  是有字符输出的
          哪位有建议 经验的  请不吝指教!!!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2016-4-3 01:02:17 | 显示全部楼层

回 tedani 的帖子

tedani:
是的  谢谢eric。而且需要把MENU_CreateEx创建的菜单全删除了才行,起初只删除了hMenu,结果还是泄露内存。

          另,再请教下,我在gui_x_os.c中已实体化了GUI_X_ErrorOut  GUI_X_Warn  GUI_X_Log,
                  同时开启#define GUI_DEBUG_LEVEL               (5)

.......
这个调试功能我也没有用过,好像无法调试的,不过在emWin5.32新增了emWinSPY调试软件的JLINK功能,这样调试emWin非常方便。
002NDCCLgy6XLHALH6Mf8&690.jpg
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-4-4 00:03:30 | 显示全部楼层
谢谢 eric,5.32的这个功能好帅气   我得赶紧看下怎么用[s:141]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2016-4-4 00:48:56 | 显示全部楼层

回 tedani 的帖子

tedani:谢谢 eric,5.32的这个功能好帅气   我得赶紧看下怎么用[s:141]  (2016-04-04 00:03) 
现在emWin5.32只有模拟器,用于芯片的库还没有升级到这个版本,STemWin还处于5.28版本,而MDK安装目录里面的也还处在5.30版本, emWinSPY在这些版本里面还仅支持网口调试,到了5.32版本就支持JLINK,这样调试就极其方便了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 17:00 , Processed in 0.178817 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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