lihuafeng 发表于 2008-10-20 15:44:00

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

本帖最后由 作者 于 2008-10-22 17:45:41 编辑 <br /><br /> <p>这是我做的一个简单的例子:输入命令addline,跳出主对话框“对话框的嵌套”,点击主对话框的按钮“调用另一个对话框”跳出对话框“画直线”,点击“画直线”按钮,不能立刻显示图形,分别按两个对话框的确定按钮后才出现右侧的一条直线。</p><p>我用的是VC++6.0和ARX2002,两个对话框是模态对话框。</p><p>请问各位高手,能不能在点击“画直线”按钮时立即出现右侧的直线呢?<br/></p><p></p><p>这是源码,请高手指点迷津!</p>

caddeveloper 发表于 2008-10-20 16:33:00

改为非模态的 在点击画线时 destory掉两个对话框

lihuafeng 发表于 2008-10-20 18:00:00

本帖最后由 作者 于 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/>&nbsp;// TODO: Add your control notification handler code here<br/>&nbsp;//隐藏对话框把控制权交给AutoCAD<br/>&nbsp;BeginEditorCommand();<br/>&nbsp;<br/>&nbsp;AcGePoint2d InsrtPt(0, 0); <br/>&nbsp;AcGePoint2d Pt1(0, 0); </p><p>&nbsp;//提示用户输入一点<br/>&nbsp;ads_point pt;<br/>&nbsp;if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM) <br/>&nbsp;{ <br/>&nbsp;&nbsp;//梁柱刚性连接1<br/>&nbsp;&nbsp;InsrtPt.set(pt, pt);<br/>&nbsp;&nbsp;Pt1.set(pt+1000, pt+1000);<br/>&nbsp;&nbsp;CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);&nbsp;<br/>&nbsp;&nbsp;// 如果点有效,继续执行 <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;CompleteEditorCommand(); <br/>&nbsp;} <br/>&nbsp;else <br/>&nbsp;{ <br/>&nbsp;&nbsp;// 否则取消命令(包括对话框) <br/>&nbsp;CancelEditorCommand(); <br/>&nbsp;}<br/>&nbsp;<br/>}<br/></p><p></p><p></p><p>这是出现的警告</p>

chenknight 发表于 2008-10-20 20:57:00

<p>试试用以下函数吧</p><p>BeginEditorCommand();</p><p>CompleteEditorCommand();<br/></p>

lihuafeng 发表于 2008-10-21 08:59:00

本帖最后由 作者 于 2008-10-21 8:59:01 编辑 <br /><br /> <p>这两个函数我都用了</p>

NEtiger 发表于 2008-10-21 17:34:00

绘制完线的时候用一下,发送cad命令 regen,重绘模型看看。

lihuafeng 发表于 2008-10-22 09:27:00

<p>绘制完线后发送regen还是和原来一样,要关闭两个对话框才能看到直线。</p><p>extern Adesk::Boolean acedPostCommand(const char* ); <br/>void CLineDlg::OnBUTTONline() <br/>{<br/>&nbsp;// TODO: Add your control notification handler code here<br/>&nbsp;//隐藏对话框把控制权交给AutoCAD<br/>&nbsp;BeginEditorCommand();<br/>&nbsp;<br/>&nbsp;AcGePoint2d InsrtPt(0, 0); <br/>&nbsp;AcGePoint2d Pt1(0, 0); </p><p>&nbsp;//提示用户输入一点<br/>&nbsp;ads_point pt;<br/>&nbsp;if (acedGetPoint(NULL, "\n输入一个点:", pt) == RTNORM) <br/>&nbsp;{&nbsp;<br/>&nbsp;&nbsp;InsrtPt.set(pt, pt);<br/>&nbsp;&nbsp;Pt1.set(pt+1000, pt+1000);<br/>&nbsp;&nbsp;CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1); <br/>&nbsp;&nbsp;acedPostCommand("regen");&nbsp; <br/>&nbsp;&nbsp;// 如果点有效,继续执行&nbsp;<br/>&nbsp;&nbsp;CompleteEditorCommand(); <br/>&nbsp;} <br/>&nbsp;else <br/>&nbsp;{ <br/>&nbsp;&nbsp;// 否则取消命令(包括对话框) <br/>&nbsp;CancelEditorCommand(); <br/>&nbsp;}<br/>&nbsp;<br/>}<br/></p>

jackin 发表于 2008-10-22 14:30:00

画完直线,并添加到数据库后,用 这个函数 acdbEntUpd 更新一下.

lihuafeng 发表于 2008-10-22 17:40:00

本帖最后由 作者 于 2008-10-22 17:42:20 编辑 <br /><br /> <p>还是不行,会出现下面的警告</p><p></p><p>这是源码,请高手指点迷津!</p>

sinceret 发表于 2009-1-22 22:25:00

<p>&nbsp;&nbsp;CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);&nbsp;<br/>&nbsp;&nbsp;// 如果点有效,继续执行&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;CompleteEditorCommand(); <br/>这两行换一下,先结束退出交互</p><p>在添加线</p><p>CompleteEditorCommand();</p><p>CCreateEnt::CreatePolyline(InsrtPt, Pt1, 1);</p>
页: [1] 2
查看完整版本: [求助]关于嵌套对话框及图形的显示