明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4940|回复: 10

[求助]关于嵌套对话框及图形的显示

[复制链接]
发表于 2008-10-20 15:44:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-10-22 17:45:41 编辑

这是我做的一个简单的例子:输入命令addline,跳出主对话框“对话框的嵌套”,点击主对话框的按钮“调用另一个对话框”跳出对话框“画直线”,点击“画直线”按钮,不能立刻显示图形,分别按两个对话框的确定按钮后才出现右侧的一条直线。

我用的是VC++6.0和ARX2002,两个对话框是模态对话框。

请问各位高手,能不能在点击“画直线”按钮时立即出现右侧的直线呢?

这是源码,请高手指点迷津!

本帖子中包含更多资源

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

x
发表于 2008-10-20 16:33:00 | 显示全部楼层
改为非模态的 在点击画线时 destory掉两个对话框
 楼主| 发表于 2008-10-20 18:00:00 | 显示全部楼层
本帖最后由 作者 于 2008-10-20 18:04:23 编辑

caddeveloper兄,不行啊,我将主对话框改成了非模态的,按“画直线”按钮就出现警告。

画直线按钮的程序段如下:

void CLineDlg::OnBUTTONline()
{
 // TODO: Add your control notification handler code here
 //隐藏对话框把控制权交给AutoCAD
 BeginEditorCommand();
 
 AcGePoint2d InsrtPt(0, 0);
 AcGePoint2d Pt1(0, 0);

 //提示用户输入一点
 ads_point pt;
 if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM)
 {
  //梁柱刚性连接1
  InsrtPt.set(pt[X], pt[Y]);
  t1.set(pt[X]+1000, pt[Y]+1000);
  CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); 
  // 如果点有效,继续执行
  
  CompleteEditorCommand();
 }
 else
 {
  // 否则取消命令(包括对话框)
 CancelEditorCommand();
 }
 
}

这是出现的警告

本帖子中包含更多资源

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

x
发表于 2008-10-20 20:57:00 | 显示全部楼层

试试用以下函数吧

BeginEditorCommand();

CompleteEditorCommand();

 楼主| 发表于 2008-10-21 08:59:00 | 显示全部楼层
本帖最后由 作者 于 2008-10-21 8:59:01 编辑

这两个函数我都用了

发表于 2008-10-21 17:34:00 | 显示全部楼层
绘制完线的时候用一下,发送cad命令 regen,重绘模型看看。
 楼主| 发表于 2008-10-22 09:27:00 | 显示全部楼层

绘制完线后发送regen还是和原来一样,要关闭两个对话框才能看到直线。

extern Adesk::Boolean acedPostCommand(const char* );
void CLineDlg::OnBUTTONline()
{
 // TODO: Add your control notification handler code here
 //隐藏对话框把控制权交给AutoCAD
 BeginEditorCommand();
 
 AcGePoint2d InsrtPt(0, 0);
 AcGePoint2d Pt1(0, 0);

 //提示用户输入一点
 ads_point pt;
 if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM)
 { 
  InsrtPt.set(pt[X], pt[Y]);
  t1.set(pt[X]+1000, pt[Y]+1000);
  CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);
  acedPostCommand("regen"); 
  // 如果点有效,继续执行 
  CompleteEditorCommand();
 }
 else
 {
  // 否则取消命令(包括对话框)
 CancelEditorCommand();
 }
 
}

发表于 2008-10-22 14:30:00 | 显示全部楼层
画完直线,并添加到数据库后,用 这个函数 acdbEntUpd 更新一下.
 楼主| 发表于 2008-10-22 17:40:00 | 显示全部楼层
本帖最后由 作者 于 2008-10-22 17:42:20 编辑

还是不行,会出现下面的警告

这是源码,请高手指点迷津!

本帖子中包含更多资源

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

x
发表于 2009-1-22 22:25:00 | 显示全部楼层

  CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); 
  // 如果点有效,继续执行   
  CompleteEditorCommand();
这两行换一下,先结束退出交互

在添加线

CompleteEditorCommand();

CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 14:49 , Processed in 0.161821 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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