乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 22|回复: 1

一个文挡反映器的错误,希望得到解决

[复制链接]

16

主题

27

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2003-7-10 15:50:00 | 显示全部楼层 |阅读模式
问题,我的程序在没有加文挡反映器时,一切正常,可一加上文挡反映器时,关闭文挡抱错(见图)后经过进一步调试,发现问提在于
if (pActivatingDoc){.......}里头的代码有关,我自己实在找不出问题在那里,请教各位斑竹
我加了一个文挡反映器class bahQieTiDocManagReactor : public AcApDocManagerReactor
添加了如下功能函数
void bahQieTiDocManagReactor::documentBecameCurrent(AcApDocument* pActivatingDoc)
{
        // TODO: implement this function.
        if (pActivatingDoc)//问题在于下面在{...}之间的代码
        {
                        acDocManager->lockDocument( acDocManager->curDocument(), AcAp::kWrite,NULL,NULL,true) ;
                        AcDbDictionary *pNamedobj;
                        AcDbDictionary *pDict;
                        acdbHostApplicationServices()->workingDatabase()
                                ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
                        // Get a pointer to the ASDK_DICT dictionary.
                        
                        AcGeIntArray layerHaoArry;
                        if(pNamedobj->getAt("MYLAYER_DICT",(AcDbObject*&)pDict,AcDb::kForRead)==Acad::eOk )
                        {
                                
                                // Run through the entries and list their backpointers.
                                
                                
                                AcDbDictionaryIterator *pDictItr = pDict->newIterator();
                                for (; !pDictItr->done(); pDictItr->next())
                                {
                                        //printOut(pDictItr->objectId());
                                        AcDbObjectId        id=pDictItr->objectId();
                                        AcDbMyLayer *pDemo;
                                        acdbOpenObject((AcDbObject*&)pDemo, id, AcDb::kForRead);
                                        layerHaoArry.append(pDemo->intData());
                                        acutPrintf("====2=======:%d\n",pDemo->intData());
                                        pDemo->close();
                                       
                                }
                        }
                        pNamedobj->close();
                        pDict->close();
                        int tempLayerHao0,tempLayerHao1;
                        for(int p=0;punlockDocument( acDocManager->curDocument());
                        
                        for(int i=0;im_cmbDrawingLayer.InsertString( i, cr );}
                        }
                        
                        
        }
m_AihuiToolBar为全局toolBar指针
在void InitApplication()
{
        if(pQieTiDoc==NULL){
        
                pQieTiDoc=new bahQieTiDocManagReactor();
        }
        
        acDocManager->addReactor(pQieTiDoc);
}
void UnloadApplication()
{
        acDocManager->removeReactor(pQieTiDoc);
}
其中pQieTiDoc为全局bahQieTiDocManagReactor 指针

olronljso30.jpg

olronljso30.jpg

回复

使用道具 举报

32

主题

150

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
278
发表于 2003-7-10 18:01:00 | 显示全部楼层
1) pDictItr 没delete?
2) 以下3个文档同时使用有没有问题,我不明白:
acdbHostApplicationServices()->workingDatabase(),
pActivatingDoc
acDocManager->curDocument()
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 11:58 , Processed in 0.147685 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表