您正在看的AutoCad是:使用Visual C++创建ARX程序。
bsp; Step 2 建立源文件“Hello.cpp”
(1) 选择菜单命令【File】→【New…】,弹出“New”对话框。
(2) 在“New”对话框中选择“Files”选项卡。
(3) 在“Files”选项卡中选择“C++ Source File”项。
(4) 输入源文件名称“Hello.cpp”和存放目录,确认“Add to project:”项被选中,并选择加入的工程为“Hello”。
(5) 完成以上步骤后(如图38-3所示),单击OK按钮确定。

(6) 在Visual C++的工作窗口中输入源文件“Hello.cpp”的内容并保存,程序清单如下:
// Hello.cpp
#include <rxregsvc.h>
#include <aced.h>
#include <adslib.h>
// 执行函数,在AutoCAD中执行Hello命令时被调用
void Hello()
{
acutPrintf("Hello, Object ARX!");
}
// 初始化函数
// 在acrxEntryPoint()函数的kInitAppMsg事件中被调用,
// 向AutoCAD命令堆栈中添加新命令组以及ACRX类层次
// 中添加新的自定义类,本实例中无自定义类,故不用初始化新类
void initApp()
{
//显示提示信息
acutPrintf("\n初始化函数\n");
// addCommand函数在AutoCAD命令堆栈中注册
// 新的命令组名“HelloARX_COMMANDS”、
// 通用命令名“Hello”、
// 本地命令名“Hello”和该命令的执行函数Hello()
acedRegCmds->addCommand("HelloARX_COMMANDS","Hello","Hello",
ACRX_CMD_MODAL,Hello);
}
// 程序卸载函数
// 在acrxEntryPoint()函数的kUnloadAppMsg事件中被调用
// 从AutoCAD命令堆栈清除已添加的命令以及从ACRX类层次中清除自定义类
void unloadApp()
{
// 显示提示信息
acutPrintf("\n卸载函数\n");
// 从命令堆栈中清除命令组“HelloARX_COMMANDS”
acedRegCmds->removeGroup("HelloARX_COMMANDS");
}
// ARX程序主函数
// 与AutoCAD通信的入口,处理AutoCAD发送的各类消息
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(appId);
acrxDynamicLinker->registerAppMDIAware(appId);
//调用initApp()函数
initApp();
break;
case AcRx::kUnloadAppMsg:
//调用unloadApp()函数
unloadApp();
}
return AcRx::kRetOK;
}
Step 3 建立源文件“Hello.def”
&n