ham 发表于 2006-7-4 15:45:00

请教各位高手

<P>我是初学者,最近碰到一个问题,在读dwg文件时,</P>
<P>dwgpath="D:\\Drawing1.dwg";</P>
<P>&nbsp;AcDbDatabase *pNewDb =new AcDbDatabase(Adesk::kFalse);&nbsp;<BR>&nbsp;&nbsp;int es=pNewDb-&gt;readDwgFile(dwgpath , _SH_DENYNO,false); <BR>&nbsp;if (es!=Acad::eOk) <BR>&nbsp;{ <BR>&nbsp;&nbsp;acutPrintf("\nThe file %s cannot be opend",dwgpath); <BR>&nbsp;&nbsp;return; <BR>&nbsp;} </P>
<P>es总是不等于Acad::eOk,值是320;不知道为什么,在别的程序里可以运行,很奇怪。</P>
<P>这里我是在一个双击对话框的消息函数里调用这些语句的,请教各位!</P>

chenpool 发表于 2006-7-4 20:48:00

<P>调试检查一下是不是这个文件已经被打开了?</P>
<P>捕捉一下es返回值是什么就知道是什么问题了</P>

ham 发表于 2006-7-4 22:30:00

谢谢pool兄,es的返回值是eLockViolation, 大概是内存锁定的意思吧,请教为什么会这样,怎样解决啊?谢谢!

ham 发表于 2006-7-4 23:03:00

<P>看了王斑竹几年前的一个帖子,问题解决了,谢谢各位!方法如下:</P>
<P>如果是DockControBar或modeless窗体, 在调用acdbOpenObject, acdbOpenAcDbEntity等函数时, 要在处理前</P>
<P>acDocManager-&gt;lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);</P>
<P>调用结束后</P>
<P>acDocManager-&gt;unlockDocument(curDoc());</P>
页: [1]
查看完整版本: 请教各位高手