找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 380|回复: 0

[教学]:一个文挡反映器的错误,希望得到解决

[复制链接]
发表于 2003-7-10 15:42:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
问题,我的程序在没有加文挡反映器时,一切正常,可一加上文挡反映器时,关闭文挡抱错(见图)后经过进一步调试,发现问提在于
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;p<layerHaoArry.length()-1;p++)//进行楼层排序
                        {
                                int m=p;
                                for(int j=p+1;j<layerHaoArry.length();j++)
                                {
                                        if(layerHaoArry.at(j)<layerHaoArry.at(m))
                                        {
                                                m=j;
                                        }
                                }
                                tempLayerHao0=layerHaoArry.at(p);
                                tempLayerHao1=layerHaoArry.at(m);
                                layerHaoArry.setAt(m,tempLayerHao0);
                                layerHaoArry.setAt(p,tempLayerHao1);
                               
                        }
                        acDocManager->unlockDocument( acDocManager->curDocument());
                       
                        for(int i=0;i<layerHaoArry.length();i++)
                        {
                                char cr[3];
                                acdbRToS(layerHaoArry.at(i),2,2,cr);
                            if(m_AihuiToolBar!=NULL){
                                        m_AihuiToolBar->m_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 指针
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-13 12:33 , Processed in 0.352081 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表