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

使用tab控件的对话框出错

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


   按过取消之后的cad


   完整的工程文件
注:IE11发帖时这一条栏不显示。


**** Hidden Message *****

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

假死多长时间?

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


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

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

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

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


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

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

//选择圆数量;
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:00

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

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

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