王咣生 发表于 2004-11-14 00:10:00

简单总结CAcUiDockControlBar应用过程

zfbj版主,中午写了一点DockControlBar实现步骤的,还是发上来吧.




要补充的一点就是:
1. 要建立文档反应器,如果当前文档全部关闭时,就要关闭当前的DockControlBar,否则AutoCAD异常退出.
2. 如果要通过DockControlBar上的控件执行打开操作AutoCAD实体的话,        要在处理前调用
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);


调用结束后


acDocManager->unlockDocument(curDoc());


否则返回eLockViolation错误信息.

spaceh 发表于 2004-11-14 21:45:00

真诚的想问问楼主,为什么第一条有“要建立文档反应器,如果当前文档全部关闭时,就要关闭当前的DockControlBar,否则AutoCAD异常退出. ”这个说法^_^。



        我做了一个继承自AcDialogBar的对话框,加载到autocad里没有什么问题,但是我在那个对话框上加了个IDC_TREE控件,然后对其进行子类化后,可以显示出树来,但是整个退出autocad的时候出了毛病,报个致命错误:“unhandled access violation reading 0x        0038 Exception at 73d31c9dh”,是不是也是你所说的问题呢,我调试的时候可以看到可能是读了没有初始化的内存。


到这个地方可能出错了:


        virtual void documentToBeDestroyed( AcApDocument *pDoc )<BR>                       {<BR>                                                       m_dataMap.erase(pDoc);<BR>        <BR>                       }


也不知道是不是这个问题,要怎么个解决才是?呵呵,特意请教!麻烦您解答一下,有表述不清的地方愿谅解!

王咣生 发表于 2004-11-14 22:54:00

本帖最后由 作者 于 2004-11-15 0:14:41 编辑

m_dataMap.erase(pDoc); 这一句应该是什么意思呢?



你可以把这一句先注释掉试一试,如果autocad退出时不再出现你说的错误,那问题可能就在这儿.


至于为什么要建立文档反应器,我也是试出来的,如果当前没有方档打开,DockBar不能正确地停泊在autocad窗体框架边缘,为了解决这个问题,我通过文档反应器适时地关闭DockBar.


你能贴出你的工程吗?我很想看一看(学习)你的程序.

zfbj 发表于 2004-11-14 23:08:00

多谢多谢,按你的方法已经作出了框架。

spaceh 发表于 2004-11-15 10:50:00

我把代码放到晓东空间了,昨天上传不了,sorry!

spaceh 发表于 2004-11-15 18:46:00

今天不知道能不能传,看看!

spaceh 发表于 2004-11-15 18:51:00

本帖最后由 作者 于 2004-11-16 12:17:21 编辑

今天不知道能不能传,看看!原来一直没看到右边还有个按钮要点才能上传,呵呵,斑竹帮忙看看哦,呵呵,


难怪我传不上来,原来超过大小了,呵呵

王咣生 发表于 2004-11-15 22:59:00

晓东空间下载太麻烦了,速度也不理想.


刚才试了找不到服务器.

spaceh 发表于 2004-11-16 12:18:00

难怪我传不上来,原来超过大小了,呵呵

王咣生 发表于 2004-11-16 12:21:00

删除Debug, Release和*.ncb,只保留源代码文件.
页: [1] 2
查看完整版本: 简单总结CAcUiDockControlBar应用过程