明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3160|回复: 3

关于模态对话框和非模态对话框的问题

[复制链接]
发表于 2006-2-5 20:19:00 | 显示全部楼层 |阅读模式

插入块的代码:

AcDbDatabase *pCurDb;
 AcDbBlockTable *pBlkTable;
 AcDbBlockTableRecord *pBlkTableRecord;
 AcDbBlockReference *pInsrtObj;
 AcDbObjectId blkId;
 pCurDb = acdbHostApplicationServices()->workingDatabase();

 pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);
 if(!pBlkTable->has(blkName))
 {
  acutPrintf("\nBlock definition %s not found. ", blkName);
  pBlkTable->close();
  return;
 }

 pBlkTable->getAt(blkName, blkId);

//下面的这一行在模态对话框中能很好的执行,但是在非模态对话框中却使CAD出现严重错误。不知怎么回事。请各位能指点一下迷津谢谢。

 pBlkTable->getAt(ACDB_MODEL_SPACE, pBlkTableRecord, AcDb::kForWrite);
 pBlkTable->close();

 pInsrtObj = new AcDbBlockReference(insPt, blkId);

 pBlkTableRecord->appendAcDbEntity(blkId, pInsrtObj);

 pBlkTableRecord->close();
 pInsrtObj->close();

Modal对话框中 按纽单击事件 以上代码能通过编译、执行

Modeless对话框中 按纽单击事件 以上代码能通过编译,执行时出现错误。

为这个问题都忙活了一天了,不知怎么解决。请一定指点一下!谢谢。

 楼主| 发表于 2006-2-5 20:26:00 | 显示全部楼层

自己在网上找的答案如下:由于E文太差,请各位老大说明一下。

In a modeless dialog you are in application scope and not document scope.
acedCommand only works in document scope. You can try this to see if it
works. It is how I switch to document scope when the user right clicks in
the window, so I do not know if it will work from the modeless dialog, but I
think it should.
AcApDocument* pDoc = acDocManager->curDocument();

Acad::ErrorStatus es = acDocManager->lockDocument(pDoc);

if(es == Acad::eOk)

{

acedCommand.......

}

 楼主| 发表于 2006-2-5 21:13:00 | 显示全部楼层

成功了!!哭死,搞了两天这个问题。

总结如下:

窗口要这样创建:

 xfhDlg* xD = NULL;
 xD=new xfhDlg(acedGetAcadFrame());
 xD->Create(DLG_M);
 xD->ShowWindow(SW_SHOW);
 xD->CenterWindow();

在出错的代码前加上以下:

//非模态对话框要用以下代码:
AcApDocument* pDoc= acDocManager->curDocument();
Acad::ErrorStatus es = acDocManager->lockDocument(pDoc);
if(es != Acad::eOk) return;

 

在结束处加上以下代码:

//非模态对话框要用以下代码:

acDocManager->unlockDocument(pDoc);

发表于 2008-10-30 15:43:00 | 显示全部楼层
以后多向老兄学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:37 , Processed in 0.170437 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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