举例一个在模态对话框中选择点并显示点的功能。
在“选择点”按钮的单击事件中,隐藏对话框,提示用户在图形窗口中选择一个
点,然后重新显示该对话框,其处理函数为:void CArxDialog::OnButtonPoint()//点击按钮响应函数{ // 隐藏对话框把控制权交给AutoCADBeginEditorCommand();// 提示用户输入一个点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();}