lzgvcd 发表于 2007-8-29 19:03:00

为何不能加载arx程序,请指点,在线等,告急啊

<p>#include "stdafx.h"<br/>#include &lt;aced.h&gt;<br/>#include &lt;rxregsvc.h&gt;<br/>// 声明初始化函数和卸载函数<br/>void initApp();<br/>void unloadApp();<br/>// 声明命令的执行函数<br/>void HelloWorld();<br/>// 加载应用程序时被调用的函数<br/>void initApp()<br/>{<br/>&nbsp;//使用AutoCAD命令机制注册一个新命令<br/>&nbsp;acedRegCmds-&gt;addCommand("HELLOWORLD_COMMANDS",<br/>&nbsp;&nbsp;"Hello",<br/>&nbsp;&nbsp;"Bonjour",<br/>&nbsp;&nbsp;ACRX_CMD_TRANSPARENT,<br/>&nbsp;&nbsp;HelloWorld);<br/>}<br/>// 卸载应用程序时被调用的函数<br/>void unloadApp()<br/>{<br/>//删除命令组<br/>&nbsp;&nbsp; acedRegCmds-&gt;removeGroup("HELLOWORLD_COMMANDS");<br/>}<br/>// 实现Hello命令的函数<br/>void HelloWorld()<br/>{<br/>&nbsp;&nbsp; ads_alert("\nHello, World!");<br/>}<br/>// 入口点函数<br/>extern "C" AcRx::AppRetCode<br/>acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)<br/>{<br/>&nbsp;switch (msg)<br/>&nbsp;{<br/>&nbsp;case AcRx::kInitAppMsg:<br/>&nbsp;&nbsp;acrxDynamicLinker-&gt;unlockApplication(pkt);<br/>&nbsp;&nbsp;//acrxRegisterAppMDIAware(pkt);<br/>&nbsp;&nbsp;//acrxDynamicLinker-&gt;registerAppMDIAware(pkt);<br/>&nbsp;&nbsp;initApp();<br/>&nbsp;&nbsp;break;<br/>&nbsp;case AcRx::kUnloadAppMsg:<br/>&nbsp;&nbsp;unloadApp();<br/>&nbsp;&nbsp;break;<br/>&nbsp;default:<br/>&nbsp;&nbsp;break;<br/>&nbsp;}<br/>&nbsp;return AcRx::kRetOK;<br/>}</p><p>以上是个很简单的启蒙例子,大家都很清楚,但是在我这里出现了这样的问题,请高手指点</p><p>已经提示说加载成功了,但是运行就会出现以下的情况:未知命令“FIRSTARX</p><p>这个是加载的时候出现的提示:-( ARX application : G:\zuoye\firstArx\Debug\firstArx.arx is NOT MDI aware. :-(<br/>已成功加载 firstArx.arx。</p>

zhang007 发表于 2007-8-31 09:23:00

<p>肯定是未知命令FIRSTARX,因为你根本就没注册这个命令。。你注册的是</p><p>"Hello",//全球命令名<br/>"Bonjour",//本地命令名<br/></p>

10309598 发表于 2007-9-8 22:14:00

回复:(lzgvcd)为何不能加载arx程序,请指点,在线等...

<p>不明白你说的,标题说不能加载,怎么会有加载成功的提示。</p><p>我的也和你一样,用这个代码,编译成功,可是加载的时候老是失败!</p>

fpiw 发表于 2007-9-12 08:55:00

你注释掉的那一句就是支持多文档用的:acrxDynamicLinker-&gt;registerAppMDIAware(pkt);<br/>AutoCAD 在R14及以前的版本只支持单文档模式,从2000以后支持多文档,如果你的ARX程序没有注册为支持多文档模式,加载时就会有上面的提示警告
页: [1]
查看完整版本: 为何不能加载arx程序,请指点,在线等,告急啊