[求助]关于嵌套对话框及图形的显示
本帖最后由 作者 于 2008-10-22 17:45:41 编辑 <br /><br /> <p>这是我做的一个简单的例子:输入命令addline,跳出主对话框“对话框的嵌套”,点击主对话框的按钮“调用另一个对话框”跳出对话框“画直线”,点击“画直线”按钮,不能立刻显示图形,分别按两个对话框的确定按钮后才出现右侧的一条直线。</p><p>我用的是VC++6.0和ARX2002,两个对话框是模态对话框。</p><p>请问各位高手,能不能在点击“画直线”按钮时立即出现右侧的直线呢?<br/></p><p></p><p>这是源码,请高手指点迷津!</p> 改为非模态的 在点击画线时 destory掉两个对话框 本帖最后由 作者 于 2008-10-20 18:04:23 编辑 <br /><br /> <strong><font face="Verdana" color="#61b713">caddeveloper兄,</font></strong>不行啊,我将主对话框改成了非模态的,按“画直线”按钮就出现警告。 <p>画直线按钮的程序段如下:</p><p>void CLineDlg::OnBUTTONline() <br/>{<br/> // TODO: Add your control notification handler code here<br/> //隐藏对话框把控制权交给AutoCAD<br/> BeginEditorCommand();<br/> <br/> AcGePoint2d InsrtPt(0, 0); <br/> AcGePoint2d Pt1(0, 0); </p><p> //提示用户输入一点<br/> ads_point pt;<br/> if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM) <br/> { <br/> //梁柱刚性连接1<br/> InsrtPt.set(pt, pt);<br/> Pt1.set(pt+1000, pt+1000);<br/> CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); <br/> // 如果点有效,继续执行 <br/> <br/> CompleteEditorCommand(); <br/> } <br/> else <br/> { <br/> // 否则取消命令(包括对话框) <br/> CancelEditorCommand(); <br/> }<br/> <br/>}<br/></p><p></p><p></p><p>这是出现的警告</p> <p>试试用以下函数吧</p><p>BeginEditorCommand();</p><p>CompleteEditorCommand();<br/></p> 本帖最后由 作者 于 2008-10-21 8:59:01 编辑 <br /><br /> <p>这两个函数我都用了</p> 绘制完线的时候用一下,发送cad命令 regen,重绘模型看看。 <p>绘制完线后发送regen还是和原来一样,要关闭两个对话框才能看到直线。</p><p>extern Adesk::Boolean acedPostCommand(const char* ); <br/>void CLineDlg::OnBUTTONline() <br/>{<br/> // TODO: Add your control notification handler code here<br/> //隐藏对话框把控制权交给AutoCAD<br/> BeginEditorCommand();<br/> <br/> AcGePoint2d InsrtPt(0, 0); <br/> AcGePoint2d Pt1(0, 0); </p><p> //提示用户输入一点<br/> ads_point pt;<br/> if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM) <br/> { <br/> InsrtPt.set(pt, pt);<br/> Pt1.set(pt+1000, pt+1000);<br/> CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); <br/> acedPostCommand("regen"); <br/> // 如果点有效,继续执行 <br/> CompleteEditorCommand(); <br/> } <br/> else <br/> { <br/> // 否则取消命令(包括对话框) <br/> CancelEditorCommand(); <br/> }<br/> <br/>}<br/></p> 画完直线,并添加到数据库后,用 这个函数 acdbEntUpd 更新一下. 本帖最后由 作者 于 2008-10-22 17:42:20 编辑 <br /><br /> <p>还是不行,会出现下面的警告</p><p></p><p>这是源码,请高手指点迷津!</p> <p> CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); <br/> // 如果点有效,继续执行 <br/> CompleteEditorCommand(); <br/>这两行换一下,先结束退出交互</p><p>在添加线</p><p>CompleteEditorCommand();</p><p>CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);</p>
页:
[1]
2