找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2111|回复: 7

[建议]:关于isKindOf的问题

[复制链接]
发表于 2007-7-14 12:30:04 | 显示全部楼层 |阅读模式

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

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

×
以前在派生自定义类的时候发现isKindOf无法正确使用,后来在binbin大人的指导下这个问题终于解决了。请看:

在派生类的CPP文件中有这样几行代码,这是原来的情况
//{{AFX_ARX_MACRO
ACRX_DXF_DEFINE_MEMBERS(WJRedLine, AcDbEntity,
                        AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
                        AcDbProxyEntity::kNoOperation,
                        WJREDLINE, WJMyLine
);
//}}AFX_ARX_MACRO

现在改为:

//{{AFX_ARX_MACRO
ACRX_DXF_DEFINE_MEMBERS(WJRedLine, WJRedEntity,
                        AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
                        AcDbProxyEntity::kNoOperation,
                        WJREDLINE, WJMyLine
);
//}}AFX_ARX_MACRO
把AcDbEntity用WJRedEntity替换就可以了,WJRedEntity是以AcDbEntity派生的一个我的基类,然后WJRedLine是我以WJRedEntity为基类进行派生的。希望研究自定义类的朋友能避免一些问题。


非常抱歉:
后来有发现这是不可行的,发现在退出CAD时WJRedEntity无法注销服务。所以还是不得回到原来的状态。具体原因目前还不清楚。

但后来又经过研究发现,WJRedEntity是一个基类,当他在自己的UnLoadApplication函数中进行:
deleteAcRxClass(WJRedEntity::desc());
  delete acrxServiceDictionary->remove(WJMYENTITY_DBXSERVICE);
由其派生的子类还没完全注销服务,所以就出问题了。这样就把以上两行代码从WJRedEntity的UnloadApplication()中取消,把它添加到主程序(也就是最后退出的程序)的UnloadApplication()函数中就可以。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-24 14:23:50 | 显示全部楼层
RedCAD 真棒!
有个问程序(简单的)想向你求教: ARX调用MFC对话框我编译不通过[在下用VS.NET2002+ARX2006]代如如附件,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-24 19:15:16 | 显示全部楼层
下不下来,但我以前使用VS.NET2002+ARX2005是没有任何问题的,ARX2006我到还没试过,你还是用ARX2005或ARX2004吧,现在大家基本上都推荐使用这样的组合。我目前又回到了ARX2000了。下次能下来我帮你在ARX2004下看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-25 13:45:41 | 显示全部楼层
好的,我们以后有空再讨论:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-27 13:24:50 | 显示全部楼层
是不是需要用cast 来进行判断
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-29 12:50:42 | 显示全部楼层
if(pEnt->isKindOf(WJRedEntity::desc())
{
.....
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-10 16:10:08 | 显示全部楼层
顶一下RedCAD老兄的贴!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-13 08:14:18 | 显示全部楼层
ARX2004,ARX2005,ARX2006 是二进制兼容的,我们一般是在2006上做,用ARX2006编译,但是AutoCAD2004没有的功能别做.编译一个版本,AutoCAD2004,5,6都能加载.但是AutoCAD2004本身就有很大的问题,所以建议大家要放弃该版本,而且AutoDesk目前已经不再支持AutoCAD2005及以下版本的技术服务了.所有如果能够不照顾AutoCAD2004的正版用户就尽量不玩AutoCAD2004了.当然如果你有一大堆AutoCAD2004的正版用户,那你就慢慢痛苦吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 22:47 , Processed in 0.196657 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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