[求助]关于嵌套对话框及图形的显示
这是我做的一个简单的例子:输入命令addline,跳出主对话框“对话框的嵌套”,点击主对话框的按钮“调用另一个对话框”跳出对话框“画直线”,点击“画直线”按钮,不能立刻显示图形,分别按两个对话框的确定按钮后才出现右侧的一条直线。我用的是VC++6.0和ARX2002,两个对话框是模态对话框。
请问各位高手,能不能在点击“画直线”按钮时立即出现右侧的直线呢?
这是源码,请高手指点迷津!
**** Hidden Message ***** 改为非模态的 在点击画线时 destory掉两个对话框
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, pt);
 t1.set(pt+1000, pt+1000);
CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);
// 如果点有效,继续执行
CompleteEditorCommand();
}
else
{
// 否则取消命令(包括对话框)
CancelEditorCommand();
}
}
这是出现的警告
试试用以下函数吧
BeginEditorCommand();
CompleteEditorCommand();
这两个函数我都用了
绘制完线的时候用一下,发送cad命令 regen,重绘模型看看。 绘制完线后发送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, pt);
 t1.set(pt+1000, pt+1000);
CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);
acedPostCommand("regen");
// 如果点有效,继续执行
CompleteEditorCommand();
}
else
{
// 否则取消命令(包括对话框)
CancelEditorCommand();
}
}
画完直线,并添加到数据库后,用 这个函数 acdbEntUpd 更新一下.
还是不行,会出现下面的警告
这是源码,请高手指点迷津!
CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);
// 如果点有效,继续执行
CompleteEditorCommand();
这两行换一下,先结束退出交互
在添加线
CompleteEditorCommand();
CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);
页:
[1]