找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 541|回复: 2

[ARX程序]:ARX教程示例2本程序演示了arx的基本设计流程,及自定义类的实现

[复制链接]
发表于 2002-12-15 13:20:38 | 显示全部楼层 |阅读模式

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

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

×
ARX教程示例2,本程序演示了arx的基本设计流程,及自定义类的实现
下面为部分代码

  1. [font=courier new]
  2. // hello2.cpp
  3. /////////////////////////////////////////////////////////


  4. #include <aced.h>
  5. #include <rxregsvc.h>
  6. #include "HloClass.h"

  7. // entry point for this application
  8. extern "C" AcRx::AppRetCode acrxEntryPoint( AcRx::AppMsgCode msg, void* );

  9. // helper functions
  10. void initApp  (void);
  11. void unloadApp(void);

  12. // user defined functions
  13. void hello(void);

  14. /////////////////////////////////////////////////////////////////////
  15. // acrxEntryPoint(internal)
  16. // This function is the entry point for your application.
  17. /////////////////////////////////////////////////////////////////////
  18. AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* ptr)
  19. {
  20.         switch (msg) {
  21.                 case AcRx::kInitAppMsg :
  22.                         acrxUnlockApplication(ptr);
  23.                         acrxRegisterAppMDIAware(ptr);
  24.                         initApp();
  25.                 break;

  26.                 case AcRx::kUnloadAppMsg :
  27.                         unloadApp();
  28.                 break;

  29.                 case AcRx::kLoadDwgMsg :
  30.                         acutPrintf("Received Acrx::kLoadDwgMsg\n");
  31.                 break;

  32.                 case AcRx::kUnloadDwgMsg :
  33.                 break;

  34.                 default:
  35.                 break;
  36.         } // switch

  37.   return AcRx::kRetOK;
  38. }

  39. void initApp(void)
  40. {
  41.         // 初始化程序
  42.     // 注册AutoCAD命令

  43.         // Step 1:
  44.     //
  45.     //  Add classes to the runtime-identifiable class hierarchy.
  46.     //        添加类至运行类树
  47.     //  This call was defined by use of the ACRX_CONS_DEFINE_MEMBERS()
  48.     //  macro on CHelloClass.

  49.     CHelloClass::rxInit();//初始化类

  50.         //  If there are any other classes that need to be initialized
  51.         //  they would go here in the following format.
  52.         //  <Classname>::rxInit();

  53.     // Step 2:
  54.     //
  55.     //   Build class relationships before proceeding.  Use after
  56.     //   making a set of <Classname>::rxInit() calls which add a
  57.     //   contiguous growth onto the inheritance tree.
  58.     //
  59.     acrxBuildClassHierarchy();

  60.     // Step 3:
  61.     //
  62.     //   Do any other initialization you need.  The point is that it is
  63.     //   best to do the classes first, since the rest of the initialization
  64.     //   is usually concerned with them.
  65.     //
  66.     //   This example application registers a service name, needed for
  67.     //   symbolic function export,  and a handy object for verifying the
  68.     //   presence of this application.
  69.     //
  70.     acrxRegisterService(SERVICE);

  71.     // register a command with the AutoCAD command mechanism
  72.     //

  73.     acedRegCmds->addCommand("HELLOWORLD_COMMANDS", "HELLO2", "HELLO2",
  74.                     ACRX_CMD_MODAL, hello);

  75.         acutPrintf("Type "HELLO2" to execute.\n");
  76.        
  77. }

  78. void unloadApp(void)
  79. {
  80.         // TODO: clean up your application

  81.     // Remove the service that was registered via acrxRegisterService()
  82.     //
  83.     delete acrxServiceDictionary->remove(SERVICE);
  84.    
  85.     // Remove the command group added via acedRegCmds->addCommand
  86.     //
  87.     acedRegCmds->removeGroup("HELLOWORLD_COMMANDS");

  88.     // remove CHelloClass from the AcRx runtime tree
  89.     //
  90.     deleteAcRxClass(CHelloClass::desc());

  91. }

  92. // TODO: add your other functions here
  93. void hello(void)
  94. {
  95.         //create the pointer which is pointed CHelloClass
  96.     CHelloClass *pHloClass = new CHelloClass;
  97.         //display the infomation in the prompt command
  98.     acutPrintf("Calling the CHelloClass hello function:\n");
  99.     if(!pHloClass)
  100.         {
  101.         acutPrintf("OOPS!! we got a null pointer ...\n");
  102.         return;
  103.     }
  104.     pHloClass->hello();
  105.     delete pHloClass;
  106.     acutPrintf("Deleted the CHelloClass Object pointer.\n");
  107. }
  108. [/font]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-8-25 15:08:19 | 显示全部楼层
我看书上自定义类好复杂哦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:57 , Processed in 0.198442 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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