glhu3 发表于 2006-2-6 14:28:00

[ARX]有关模态对话框与AutoCAD2002控制权相互转交的问题

用ARX边的程序,在2002里加载它后执行,在弹出的模态对话框中一个新建DWG的按钮,问题是点击按钮后,将控制权交给AutocAD2002,在完成如新建一个DWG文档、存盘等操作后,返回对话框,这个功能如何实现?

badboy518 发表于 2006-2-8 13:09:00

帮你顶一下。我的程序也是这个问题无法解决,我用 sw_hide  参数,还有Sleep(2000) 等指命令,就是针对 主对话框窗口 的操作,都会引起CAD挂起出错退出。

glhu3 发表于 2006-2-9 09:15:00

高分求解,谁能解决重奖励

vten6 发表于 2010-8-15 22:35:00

本问题值得探讨。我也出现类似问题。目前还没有答案。

houdy 发表于 2010-8-16 22:17:00

这时候可能需要非模态对话框,例如AutoCAD中的属性面板就是AutoCAD封装的一个非模态对话框。
点击非模态对话框中的Button后,需要隐藏这个对话框。
由于非模态对话框处于Applicaton Context, 当AutCAD窗口获得焦点后,控制权就落在AutoCAD手里, 这样我们就可以为AutoCAD命令创建/保存文档。
我们需要扑捉一个事件用来让我们的非模态对话框重新显示出来,比如可以扑捉命令结束事件,或者扑捉文档加锁/解锁命令。

kingofrpg 发表于 2010-11-7 22:01:00

模态对话框只要是从CAdUiBaseDialog派生的(一般从CAcUiDialog派生自己的模态对话框 ,CDialog->CAdUiBaseDialog->CAdUiDialog->CAcUiDialog),就可以使用如下方法:
void CMyDialog::OnBnClickedCheck1()
{
BeginEditorCommand();
    //进入CAD交互模式
if (DoMyInteractiveCommand())
//CAD交互代码,例如选择对象等
   CompleteEditorCommand();
//完成交互模式,回到对话框
      else
   CancelEditorCommand();//交互出现某种错误,直接退出对话框
}
直接从CDialog派生也可实现,我试过,但没有CAD这个的效果好.
页: [1]
查看完整版本: [ARX]有关模态对话框与AutoCAD2002控制权相互转交的问题