首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ActiveX中member variable与get/set Methods 的区别解决方法

2012-05-05 
ActiveX中member variable与get/set Methods 的区别在开发ActiveX的过程中,建立自定义属性有两个选择,Memb

ActiveX中member variable与get/set Methods 的区别
在开发ActiveX的过程中,建立自定义属性有两个选择,Member Variable表示创建一个成员变量作为存储该属性并由一个change函数标示其变化。而Get/Set模式则创建两个变化函数,将赋值和读取分开来。
问题是我发现用Member Variable建立属性会自动生成成员变量,而用Get/Set自己却不生成成员变量,而且两种方法建立的属性,在使用的时候都有put和get的方法,这样的话,干嘛要用Get/Set呢?或者说Get/Set方法有其他用意?



[解决办法]
属性是COM接口中的概念,属性可以只读、只写或读写,属性的本质还是方法(get/put),属性是对外公开的。
成员变量是类中的概念,作为接口实现者的类中的成员变量与接口属性是对应的东西,但属性不一定需要成员变量,成员变量对于组件调用者来说是不公开的,只能在组件内部使用。
get/put是IDL语言中描述属性时必须用到的,导入类型库时也可以生成get_xxx/put_xxx的方法,Get/Set往往是MFC中对属性包装的方法名称,具体生成哪种名称完全取决与使用环境。
[解决办法]
读这个属性为:get_XXX
写这个属性为:put_XXX
属性的名称为XXX
当使用环境不同时 也会有所区别
C++调用这个属性时可以有多种不同的方法,如:
IA->XXX = "ssss";
IA->put_XXX("ssss");
IA->PutXXX("ssss");

读和这个差不多:
CString strTemp = IA->XXX;
CString strTemp;
IA->get_XXX(&strTemp);
CString strTemp = IA->GetXXX();

这三种方法和使用它们的环境不同而不同.因为COM本身是可以夸语言的.
因为有些脚本不支持指针,所以才会出现这么多种不同的包装.但其时是一个接口.

热点排行