zdqwy19 发表于 2014-7-25 21:18:58

使用tab控件的对话框出错

本帖最后由 zdqwy19 于 2014-7-25 21:30 编辑

      win7 64位、cad 2014 64位、vs2010sp1创建一个对话框使用tab控件,tab子控件放置默认的取消按钮未做修改,现在出现的问题是,按过tab子控件上的取消按钮或者主对话框右上角的关闭按钮,再次运行选择命令cad假死。
   开始对话框

   按过取消之后的cad

   完整的工程文件

注:IE11发帖时这一条工具栏不显示。



风树 发表于 2014-7-25 21:53:43

假死多长时间?

zdqwy19 发表于 2014-7-25 22:43:37

风树 发表于 2014-7-25 21:53 static/image/common/back.gif
假死多长时间?

不是假死多长时间,而是出现选择小方块就不动了

风树 发表于 2014-7-25 22:49:37

cad2014不是有个升级版的,试试那个看看啦
源代码你没有做出其它改动的情况下,可以试试看

zdqwy19 发表于 2014-7-25 23:24:53

风树 发表于 2014-7-25 22:49 static/image/common/back.gif
cad2014不是有个升级版的,试试那个看看啦
源代码你没有做出其它改动的情况下,可以试试看

应该是tab控件的问题,只是不知道如何处理。

zdqwy19 发表于 2014-7-26 07:33:39

//选择圆数量;
void CArxDialog::OnBnClickedButtonYSL()
{
       //红色为取消再运行出错的部分
        // TODO: 在此添加控件通知处理程序代码
        GetParent()->GetParent()->EnableWindow(TRUE);
        //隐藏对话框把控制权交给AutoCad;
        GetParent()->ShowWindow(SW_HIDE);               
        GetParent()->GetParent()->SetFocus();// 隐藏对话框;       
        //提示用户选择对象;
        ads_name ssname;
        struct resbuf *rb;//结果缓冲区链表;
        //构造选择集过滤器;
        rb = acutBuildList(RTDXF0, ACRX_T("CIRCLE"),RTNONE);
        if(RTNORM == acedSSGet(NULL,NULL, NULL, rb, ssname)){}
        GetParent()->ShowWindow(SW_SHOW); // 再次显示我们的对话框;
        GetParent()->SetFocus(); //将焦点重置回原来的自己;
        GetParent()->GetParent()->EnableWindow(FALSE); // 禁用 AutoCAD 窗口;
        GetParent()->EnableWindow(TRUE); // 使我们的对话框显示;       
        //从成员变量传送数据的值到对话框;
        UpdateData(FALSE);
}

luowy 发表于 2014-7-28 14:09:49

1,一般在tabChild对话框,OnOK和OnCancle都要实例代码,但内部不要有代码
C::OnOK()
{
}
建议取消那个按钮
2,使用Tab的时候一定要注意父窗口的问题,GetParent这里,一定一定要注意是谁。
按了选择按钮,对话框就要隐藏,这里一个SW_HIDE就够了,不用Enable了

zdqwy19 发表于 2014-7-28 15:17:37

这估计是2014的一个问题,同样代码在2008上就没有问题。绕过tab方法解决了。
页: [1]
查看完整版本: 使用tab控件的对话框出错