关于acedCommand的讨论
ARX的帮助里说:使用acedCommand有三个原则:1、在注册为透明ARX(ACRX_CMD_TRANSPARENT)的应用程序中不使用
2、不使用acedCommand函数去执行其他任何通过acedRegCmds->addCommand()注册的命令。(可以用acedInvoke())
3、在允许用户交互操作的场合,不使用
我有一个疑问:我在A.ARX中调用另外一个B.ARX程序,同样都是透明命令,用acedCommand也可以实现调用啊。反倒用acedInvoke()调用会出毛病
如果想通过A.ARX中调用B.ARX程序,不知道大家是怎么实现的。
void A() //A是注册的命令<BR>{<BR> <BR> if(acedArxLoad("B.arx")!=RTERROR)<BR> { <BR> acedCommand(RTSTR,"B",RTNONE); //B是B.ARX中注册的命令
if(acedArxUnload("B.arx")==RTERROR)<BR> acedAlert("卸载失败!\n请重新启动系统!或者联系管理员");<BR> }<BR> else<BR> acedAlert("加载失败!\n请重新启动系统!或者联系管理员");
} 那个不能使用指的是避免在某些情况下使用, 以避免过多re-entrance(因为acedCommand, 透明命令, addCommand注册的命令等等都是靠堆栈, 使用时要避免堆栈冲突, 所以最多只允许re-entry四次), 不是一次都不能用.
页:
[1]