转载:双击实体弹出对话框(重载AcDbDoubleClickEdit)

双击实体弹出对话框(重载AcDbDoubleClickEdit)ARX 
//  DoubleClickEdit.h: interface for the CDoubleClickEdit class.
//
/ /

// By freejsutin 2005-08-17 
#include  " AcDblClkEdit.h "   // for dinfine AcDbDoubleClickEdit
#pragma  comment (lib ,"AcDblClkEditPE.lib")

#include 
" actrans.h "   // for dinfine actrTransactionManager

class  CDoubleClickEdit :  public  AcDbDoubleClickEdit 
{
public :
CDoubleClickEdit();
virtual   ~ CDoubleClickEdit(); 

void  finishEdit( void );
void  CDoubleClickEdit::startEdit(AcDbEntity  * pEnt, AcGePoint3d clickpt);

private :
bool  upgradeOpen(AcDbObject  * pEnt);
};


//  DoubleClickEdit.cpp: implementation of the CDoubleClickEdit class.
//
/ /

#include 
" stdafx.h "
#include 
" autodrawing.h "
#include 
" DoubleClickEdit.h "

#include 
" DeviceAttribute.h "

void  CDoubleClickEdit::finishEdit()
{

}

//  主要是这个函数在起作用,在这个函数里实现你想要的功能
void  CDoubleClickEdit::startEdit(AcDbEntity  * pEnt, AcGePoint3d clickpt)
{
//  由于要对实体进行编辑,先锁定文档
AcApDocument  * pDoc  =  acDocManager -> curDocument();
acDocManager
-> lockDocument(pDoc, AcAp::kWrite);

//  判断如果传进来的实体是我的自定义实体,便进行修改操作
if  (pEnt -> isKindOf(cascoCDeviceDrawing::desc())) 
{
   cascoCDeviceDrawing
*  pMyClass  =  cascoCDeviceDrawing::cast(pEnt);

   
//  将打开级别升级到可写方式,防止对象以只读模式打开
    if ! upgradeOpen(pMyClass) ) 
   {
            acDocManager
-> unlockDocument(pDoc);
    
return ;
   }

   
//  创建这个对象,以便切换CAD资源
   CAcModuleResourceOverride thisResource; 

   CDeviceAttribute Diatest(CWnd::FromHandle(adsw_acadMainWnd()));
   Diatest.DoModal();

   pMyClass
-> close();

}

//  所有修改完成,解锁文档
acDocManager -> unlockDocument(pDoc);
//  刷新显示
actrTransactionManager -> flushGraphics();
}

bool  CDoubleClickEdit::upgradeOpen(AcDbObject  * pEnt)
{
if (pEnt -> upgradeOpen() != Acad::eOk)
{
   acutPrintf(
" 错误:不能打开%s实体! " , pEnt -> isA() -> name());
   
return  FALSE;
}
return  TRUE;
}

 

转载于:https://www.cnblogs.com/houlinbo/archive/2010/04/23/1718864.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值