iCAx开思工具箱

标题: 关于Command lifecycle和RequestDelayedDestruction()作用的问题 [打印本页]

作者: ashio    时间: 2007-8-7 18:52
标题: 关于Command lifecycle和RequestDelayedDestruction()作用的问题
[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了?


作者: ashio    时间: 2007-8-9 22:51
自己顶一下~~
作者: acoka    时间: 2007-8-9 23:16
老大,给出sample workspace了话,你问得也方便
回答的人也省时间

DS的技术支持可都是按15分钟单位算钱,把你的帖子写成workspace,估计轻松15分钟就没了。银子哗哗留掉了哦
作者: ashio    时间: 2007-8-10 19:32
原来想写得清楚些,现在看来是太长了,看起来有点累,以后一定注意:)
作者: horizan    时间: 2007-8-11 08:35
SetVisibility(CATDlgHide);只是隐藏,没有清除资源,最好是delete掉。

有关对话框资源的,跟CMD的状态没有关系。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3