【转载】在模态对话框中实现用户和AutoCAD 的交互操作

举例一个在模态对话框中选择点并显示点的功能。

在“选择点”按钮的单击事件中,隐藏对话框,提示用户在图形窗口中选择一个
点,然后重新显示该对话框,其处理函数为:
void CArxDialog::OnButtonPoint()//点击按钮响应函数
{
// 隐藏对话框把控制权交给AutoCAD
BeginEditorCommand();
// 提示用户输入一个点
ads_point pt;
if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM)
{
// 如果点有效,继续执行
CompleteEditorCommand();
m_strXPt.Format("%.2f", pt[X]);//m_strXPt是CEdit控件关联CAcUiNumericEdit类型的变量
m_strYPt.Format("%.2f", pt[Y]);//同上
m_strZPt.Format("%.2f", pt[Z]);//同上
// 显示点的坐标
DisplayPoint();//自定义函数
}
else
{
// 否则取消命令(包括对话框)
CancelEditorCommand();
}
}
BeginEditorCommand 函数用于将控制权(焦点)交给AutoCAD,一般用于开始一个交
互操作;CompleteEditorCommand 函数用于从一个在AutoCAD 中完成的交互命令返回到应用
程序;CancelEditorCommand 函数用于从一个在AutoCAD 中被取消的交互命令返回到应用程
序。这三个函数组合使用,能够在模态对话框中实现用户和AutoCAD 的交互操作。

void CArxDialog::DisplayPoint()
{
// 在对话框中显示点的坐标
m_editXPt.SetWindowText(m_strXPt);
m_editXPt.Convert(); // 更新控件和其关联的成员变量
m_editYPt.SetWindowText(m_strYPt);
m_editYPt.Convert();
m_editZPt.SetWindowText(m_strZPt);
m_editZPt.Convert();
}

posted @ 2013-04-14 13:29  编号一百零二  阅读(716)  评论(0编辑  收藏  举报