iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25294|回复: 4
打印 上一主题 下一主题

关于Command lifecycle和RequestDelayedDestruction()作用的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2007-8-7 18:52:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
[size=-1]一个基于对话框(记为对话框1)的Command(exclusive),通过OK按钮的响应函数调用另一个对话框(非Command,记为对话框2),如下:
        SetVisibility(CATDlgHide);
        RequestDelayedDestruction();

        DimensionDefinition *pDimensionDefinitionDialog = new DimensionDefinition;
        pDimensionDefinitionDialog->Build();
        pDimensionDefinitionDialog->SetVisibility(CATDlgShow);
对话框2里有一个Back按钮,用于回到对话框1,相应函数如下:
        SetVisibility(CATDlgHide);
        RequestDelayedDestruction();

        IndustrialDesign *pIDDialog = new IndustrialDesign;
        pIDDialog->Build();
        pIDDialog->SetVisibility(CATDlgShow);
        但是按下back键后,得到的对话框1上的内容有重叠,而且在按下对话框1的OK后,得到两个对话框2,也就是生成了两个对话框1,注释掉pIDDialog->Build();后正常。
        在调用对话框2时,通过RequestDelayedDestruction();已经调用了一次对话框1的析构函数;
        我想请问,即使调用了析构函数,Build();函数创建的内容还都在存在于内存中?再次调用此对话框时只要调用它的构造函数就可以了吗?
        在调用对话框2(一个普通对话框,不是command)的时候,Command是什么状态,是Deactivate还是被Cancel了?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
 楼主| 发表于 2007-8-9 22:51:52 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
发表于 2007-8-9 23:16:20 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
地板
 楼主| 发表于 2007-8-10 19:32:56 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5
发表于 2007-8-11 08:35:35 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-25 12:30 , Processed in 0.018407 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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