普通的全局变量是作用于整个AutoCAD程序中,所有的文档都将能存取,某些时候,我们需要某一个全局变量仅仅在当前文档有效,便于程序之间通信或者变量值记忆。
在高版本的objectARX向导中,已经为我们提供了一个继承类,CDocData,来至AcApDataManager,AcApDataManager来至AcApDocManagerReactor,大概原理是通过反应器,在切换文档的时候,记忆和保存当前的文档内全局变量。
通常情况下,通过向导会创建CDocData.h\.cpp这两个文件,通过修改这个文件可以定义或扩展操作某些当前文档全局变量。
比如在定义一个CString的变量g_myName
在cpp文件中可以初始化成 “张三”
在命令执行的时候可以通过 DocVars.docData().g_myName 来存取数据
通过这样的方式,我们就 可以存取仅对当前文档有值的全局变量了,如果我们切换文档,那么在新的文档中,又会重新存取这个值,比如你在当前文档,这个值是张三,你又在新的文档中设置的值是李四,那么切换文档之后,每个文档都对应的是你设置的值。虽然都是g_myName这个变量,值都是不一样的。
通过这个原理,我们可以扩展出很多用法,比如两个程序之间传递参数,创建一个选择集,另外一个程序也可以访问者这个选择集。