chenpool 发表于 2005-3-19 16:03:00

关于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是注册的命令
{
       
        if(acedArxLoad("B.arx")!=RTERROR)
        {       
                       acedCommand(RTSTR,"B",RTNONE);       //B是B.ARX中注册的命令
                if(acedArxUnload("B.arx")==RTERROR)
                        acedAlert("卸载失败!\n请重新启动系统!或者联系管理员");
        }
        else
                acedAlert("加载失败!\n请重新启动系统!或者联系管理员");
}

pandoram 发表于 2005-3-24 10:43:00

那个不能使用指的是避免在某些情况下使用, 以避免过多re-entrance(因为acedCommand, 透明命令, addCommand注册的命令等等都是靠堆栈, 使用时要避免堆栈冲突, 所以最多只允许re-entry四次), 不是一次都不能用.
页: [1]
查看完整版本: 关于acedCommand的讨论