第 1 章 ObjectCRX 编程基础
初学 ObjectCRX 编程,需要了解其开发和调试环境的构建,本章首先帮助读者建立起
开发环境,进而介绍加载和运行 ObjectCRX 应用程序的方法,最后仍然以 Hello,World 来
作为进入 ObjectCRX 开发的第一个程序。
1.1 ObjectCRX开发环境
1.1.1 说明
使用 ObjectCRX,首先要确定你的目标平台,获得适当的开发环境。如果你是在电子
图板 2011 平台上开发,你就需要具备下面的工具和软件:
电子图板 2011 中文版或英文版。
Visual Studio 2010 英文版。
ObjectCRX 2011 开发包。
本节将要介绍 ObjectCRX 开发环境的构建,包括开发包的获得、开发包的组成部分、
ObjectCRX 向导的安装,以及自动提示和显示 ObjectCRX 关键字的方法。
1.1.2 思路
本章的内容不涉及具体的编程,此部分从略。
1.1.3 步骤
在开始本书的旅行之前,首先要指出,本书所有的程序都是基于电子图板 2011 中文版,
因此构建的开发环境为“Visual Studio 2010 英文版+电子图板 2011 中文版+
ObjectCRX2011”。按照
下面的步骤,一步一步构建开发环境:
(1)安装电子图板 2011 中文版和 Visual Studio 2010 英文版。软件的安装可以参考相
关软件的说明文件,不再介绍。
注意:请选择正确的 Visual Studio 版本,否则可能无法与电子图板 2011 集成开发。
(2)获得 ObjectCRX 开发包。
安装完《CAXA 电子图板 2011 - 机械版》后会在其安装目录下获得 ObjectCRX 开发
包,比如将《CAXA 电子图板 2011 - 机械版》安装在 C 盘下后,ObjectCRX 开发包在
C:\Program Files\CAXA\CAXA DRAFT MECHANICAL\2011\CRX 目录下。 在上述目录下
?
?
-?
?
?
?
?
?
?
?
Caxa
·2
得到
为 C
按钮
向导
a 电子图板 CR
·
到下面几个文
� docs:包
� docsamps
中所提到的
� inc:包含
� lib:包含
� Wizard:
(3)安装 O
CRXWizard.e
钮开始安装向
经过一段时
导的安装。
RX 二次开发指
文件夹:
包含所有的联
s:包含在《
的源代码和说
含 ObjectCRX
含 ObjectCRX
Visual Studi
ObjectCRX 开
exe 安装文件
向导。
时间,系统弹
指南
机帮助文件
《ObjectCRX
说明文件。
X 的头文件。
X 的库文件。
o 新建 crx 项
开发向导。按
件。点击安装后
图 1.1
出如 图 1.2
。
开发者向导
项目的向导工
按照开发包中
后,系统弹出
安装 ObjectC
所示的对话
导》(在 docs
工具程序。
中的路径 Wiza
出如图 1.1 所
CRX 开发向导
框,单击【F
文件夹中,
ard 目录下,
示的对话框,
Finish】按钮完
为英文的资
找到一个名
,单击【Insta
完成 ObjectC
料)
名称
all】
CRX
?
?
-?
?
?
?
?
?
?
?
对话
1.1
此时启动 V
话框,其中的
.4 效果
Visual Studio
的项目列表中
图
2010,选择【
中已经包含了
图 1.3 Objec
图 1.2 向导安装
File/New/Pro
ObjectCRX
ctCRX 开发向导
装完成
oject】菜单项
2011 AppWi
导被添加到列表
第 1 章 Ob
项,系统会弹出
izard,如图
表中
ObjectCRX 编程
出【New/Proje
1.3 所示。
程基础
·3·
ect】
?
?
-?
?
?
?
?
?
?
?
Caxa 电子图板 CRX 二次开发指南
·4·
本节不需要实例。
1.1.5 小结
虽然本书介绍的是 ObjectCRX2011,电子图版 2011 。
1.2 ObjectCRX 应用程序的加载和运行
1.2.1 说明
本节介绍在开发 ObjectCRX 程序阶段加载和运行应用程序的方法,这是调试程序的基
础 7,也是程序员所使用的方法。在创建打包程序的部分,还要介绍一些自动加载ObjectCRX
应用程序的方法,那些则是用户使用的方法。
1.2.2 思路
加载 ObjectCRX应用程序可以通过多种方法:
� 使用 MANAGE 命令。
执行 ObjectCRX应用程序仅可在命令行输入程序中注册的命令。
1.2.3 步骤
下面的步骤演示加载和运行 ObjectCRX应用程序的方法:
(1)使用MANAGE命令加载程序。在电子图板2010中,选择【工具/模块管理器】ribbon bar
菜单项,系统会弹出如图1.4所示的【模块管理器】对话框。
?
?
-?
?
?
?
?
?
?
?
到电
块管
的 C
对话
从文件列表
电子图板 201
如果要经常
管理器】对话
CRX 应用程
话框,在此对
表中选择所要
0 中。需要注
常使用某个程
话框中单击【
程序】对话框
对话框中选择
图
要加载的程序
注意的是,所
程序,就可以让
指定文件】
框。单击【打
择所要添加到
图 1.5 选
图 1.4 加载应用
序,勾选【加载
所有二次开发
让电子图板 2
按钮,系统会
打开】按钮,
启动组中的程
选择需要加载的
用程序
载】复选框,
发的程序必须
2004 在启动
会弹出如图
系统会弹出
程序。
的 CRX 应用程序
第 1 章 Ob
,就可以将选
须加载后才能
动时自动加载
1.5 所示的
【将文件添加
序
ObjectCRX 编程
选择的程序加
能使用。
载该程序。在
【选择需要加
加到启动组中
程基础
·5·
加载
【模
加载
中】
?
?
-?
?
?
?
?
?
?
?
Caxa 电子图板 CRX 二次开发指南
·6·
注意:将程序添加到启动组,使其在电子图板启动时自动加载,对于 ObjectCRX 程序的调试很
有帮助。
1.2.4 效果
参见上一节的内容。
1.2.5 小结
学习本节内容之后,读者应该掌握使用 MANAGE 命令加载 ObjectCRX 应用程序的方
法,以及运行 CRX 程序的方法。
1.3 用向导创建 Hello,World 程序
1.3.1 说明
本节使用 ObjectCRX 向导创建一个 Hello,World 程序,了解向导创建的工程的基本结
构,并且学习使用 ObjectCRX 内嵌工具栏注册命令的方法。程序执行的结果与上一节的程
序一样,在 电子图板命令行显示“Hello,World!”字符串。
1.3.2 思路
使用向导创建 ObjectCRX 应用程序,能够大大简化操作的步骤,向导自动生成了大量
的代码。同学习 MFC 一样,如果了解了向导工作的内容,那么使用向导能够大大节省工
作量;如果不了解,则可能越用越糊涂。
1.3.3 步骤
(1)在Visual Studio 2010 集成开发环境中,选择【File/New/Project】菜单项,系统会弹出
【Project】对话框。在【Projects】选项卡的工程类型列表中选择【Visual C++/CAXA】,然
后在其工程列表中选择【ObjectCRX Projects】,在下面【name】文本框中输入工程名称Hello2,
在【Location】文本框中输入适当的工程位置,如图1.6所示。完成设置后,单击【OK】按
钮。
?
?
-?
?
?
?
?
?
?
?
示。
(2)在弹出
设置完毕之
出的对话框中
之后,单击【
图
中,选择 Crea
Finish】按钮
图 1.6 创建 cr
ate a extensio
钮。
x 项目
n DLL(MFC sh
第 1 章 Ob
hared)(O) 选项
ObjectCRX 编程
项,如图 1.7
程基础
·7·
7 所
?
?
-?
?
?
?
?
?
?
?
Caxa
·8
创建
a 电子图板 CR
·
(3) 向导所
建的各个文件
RX 二次开发指
所创建的动态
件及其作用:
指南
图1.7
态链接库的基
图 1.8 显示
创建空的动态
基本信息,如
示向导生成的 C
态链接库
如图 1.8 所示
CRX 工程信息
息 7
?
?
-?
?
?
?
?
?
?
?
� St
� R
� R
�St
�Cr
On_k
机制
实际
此文
� H
变量
口点
在vs
性窗
开发
C:\P
附件
tdAfx.h:预
Resource.h:资
Resource Files
tdAfx.cpp: 预
rxEntryPoint.
kUnloadAppM
制注册一个新
际上,这就是
文件中包含ad
Hello1.cpp:应
量是在DllMai
点函数,一般
(4)编译环境
项目要准确
s2010的Solu
窗口中选择【
发包下头文件
Program Files
然后再属性
件库文件所在
编译头文件的
资源标记的声
s\Hello1.rc2:
预编译文件
.cpp 程序入
Msg。On_kInit
新命令。这个
是运行CRX 程
ddCommand
应用程序入口
in 函数中使
般来说不用注
境设置
确编译需要附
ution Explorer
C/C++ / Gen
件所在的目录
s\CAXA\CAX
性窗口上选择
在目录
的创建。
声明。
工程的第二
口类所在的文
tAppMsg实际
个命令同电子
程序的方法。
函数,其封装
口点。其中包含
使用,一般不用
注意。
附加项目所需
r窗口选择He
neral】,然后在
录
XA DRAFTM
图
择【Linker\Gen
二个资源文件
文件。其中包
际上这里它只
图板的内部命
On_kUnload
装在AddCom
含_hdllInstan
用注意。 D
需要的头文件
ello1项目,右
在Additional
MECHANICA
1.9 附加头文
neral】,然后
件。
包含两个函数
做一件事情
命令一样,可
dAppMsg函数
mmand 函数
nce 变量和D
DllMain 函数
和库文件。
右键选择“属
Include Dire
AL\2011\CRX
文件目录
后在 Additiona
第 1 章 Ob
数On_kInitApp
,就是使用电
可以直接在命
数则在程序被
,用于向电子
DllMain 函数
数是动态链接库
属性”,弹出
ectories项中,
X\Inc,如下图
al Library Dir
ObjectCRX 编程
pMsg和
电子图板的命
命令行中执行
被卸载时所调
子图板注册命
数。 _hdllInst
库(DLL)的
出属性窗口,
,附加Object
图1.9
rectories 项中
程基础
·9·
命令
行。
用。
命令。
tance
的入
在属
CRX
中,
?
?
-?
?
?
?
?
?
?
?
Caxa
·10
C:\P
void
{
cr
}
码,
class
{
publ
a 电子图板 CR
0·
Program Files
注意:将 Con
认工程
(5)hellow
d cmdHello()
rxutPrintf(_T("
需要附件头
#include "cr
(6)注册 h
需要在项目
详细代码如
s CHello1App:
ic:
CHello1App(
{
RX 二次开发指
s\CAXA\CAX
nfiguration p
程编译出现警告
world 函数如下
"\nHello World
头文件如下:
rxutcds.h"
hello 命令。
目的 CrxEntry
如下:
:public AcRxA
():AcRxArxAp
指南
XA DRAFTM
1.
roperties/Ge
告。
下:
d!"));
yPoint.cpp 文
ArxApp
pp()
MECHANICA
.10 附件库文件
eneral/Target
文件中,添加在
AL\2011\CRX
件目录
t Extension 参
在电子图板中
X\Lib,如下图
参数设置为.crx
中注册命令和
图1.10
x 能够避免默
和卸载命令的
的代
?
?
-?
?
?
?
?
?
?
?
第 1 章 ObjectCRX 编程基础
·11·
}
virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt)
{
// TODO: Load dependencies here
// You *must* call On_kInitAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg(pkt);
// TODO: Add your initialization code here
//注册命令
crxedRegCmds->addCommand(_T("HelloApp"),_T("GHello"),_T("Hello"),ACRX_CMD_MOD
AL,&cmdHello);
return (retCode) ;
}
virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt)
{
// TODO: Add your code here
// You *must* call On_kUnloadAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg(pkt);
// TODO: Unload dependencies here
//卸载命令
crxedRegCmds->removeGroup(_T("HelloApp"));
return (retCode);
}
virtual void RegisterServerComponents()
{
}
};
?
?
-?
?
?
?
?
?
?
?
Caxa
·12
1.3
201
图 1
1.3
程序
从现
a 电子图板 CR
2·
.4 效果
在 Visual S
1。使用 MA
1.9 所示的结
.5 小结
后面的程序
序,目的就是让
现在开始,我
RX 二次开发指
Studio 2010 中
ANAGE 命令
果。
序全部使用向
让读者经过分
我们要专注于
指南
中,按下快捷
加载生成的
图
向导来创建,规
分析掌握向导
于 ObjectCRX
捷键 F5 对程序
CRX 文件,
1.9 程序运行
规模也会更大
导的辅助作用
X 的精髓内容
序进行调试,
在命令行执
行的结果
大,这里用向
用,而不至于在
容。
,系统会自动
执行 Hello 命令
向导生成简单
在大量的辅助
动启动电子图
令,能够得到
单的 Hello,W
助代码中迷失
图板
到如
World
失。
?
?
-?
?
?
?
?
?
?
?