硬汉嵌入式论坛

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

[emWin] 调用GUI_EndDialog(hPage, 0)后如何确定使用的控件已经被删除了??

[复制链接]

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2018-4-28 08:40:52 | 显示全部楼层 |阅读模式
1、在不需要该页面后,调用GUI_EndDialog(hPage, 0);进行了页面关闭,那我怎么确认页面确实已经关闭了呢?如果没有关闭的话,我再次用相同的句柄创建了一个页面,会有什么后果呢??如下面的命令一样,如果hPage[1]没有顺利关闭,而我又创建了一个hPage[1],会导致什么结果呢
GUI_EndDialog(hPage1, 0);
GUI_Delay(10);
hPage1=GUI_CreateDialogBox(paWidget, NumWidgets, _cbDialog, WM_HBKWIN, 0, 0);



2、页面的在创建的时候应该先进回调函数的WM_INIT_DIALOG消息,然后在有更新的时候再进WM_PAINT吧,
如果我创建的页面先进了WM_PAINT消息,然后才进的WM_INIT_DIALOG,这会是什么原因导致的呢?有没有可能是因为上一次关闭该页面时没有关闭,然后再次创建后会先进入WM_PAINT??

麻烦大神能帮忙分析下,谢谢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2018-4-28 10:16:48 | 显示全部楼层
1、如果打算重复使用,某个句柄,删除后要将这个句柄设置为hPage1 = WM_HWIN_NULL。另外注意你的这个函数GUI_Delay(10);不可以在对话框回调函数的任何地方调用。

2、先看看是不是你的工程模板有问题,先创建一个简单的对话框多测试几次看看。
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
 楼主| 发表于 2018-4-28 10:57:38 | 显示全部楼层
eric2013 发表于 2018-4-28 10:16
1、如果打算重复使用,某个句柄,删除后要将这个句柄设置为hPage1 = WM_HWIN_NULL。另外注意你的这个函数GU ...

谢谢eric,简单的对话框试过了,没有出现这个问题,我再试试方法一
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
 楼主| 发表于 2018-4-28 11:51:50 | 显示全部楼层
eric2013 发表于 2018-4-28 10:16
1、如果打算重复使用,某个句柄,删除后要将这个句柄设置为hPage1 = WM_HWIN_NULL。另外注意你的这个函数GU ...

通过方法1还是会出现刷屏的问题,现在看来解决这个问题的方法只有在WM_PAINT中把WM_INIT_DIALOG中的所有工作再做一遍了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2018-4-29 02:43:09 | 显示全部楼层
fendoushuai 发表于 2018-4-28 11:51
通过方法1还是会出现刷屏的问题,现在看来解决这个问题的方法只有在WM_PAINT中把WM_INIT_DIALOG中的所有 ...

可能你的工程某个环节出问题了,或者说处理不得当。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 23:55 , Processed in 0.039058 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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