嵌入IE中得ActiveX控件,由IE创建。IE通过shdocvw.dll 对ActiveX控件进行查找名称为InitPropertyBag 或 InitStream 的 Instance 的一个子项。若找到,它将根据注册表项的内容创建一个 IPropertyBag 或 IStream(相应地),并将其传递给IPersistPropertyBag::Load 或 IPersistStream::Load 方法(相应地)。
这样ActiveX的控件很容易地自然地实现了和网页的序列化交互。
也正是由于IE和COleControl对对该接口的默认支持,因此在创建ActiveX控件的时候,程序员很容易的就可以解决属性在网页上的存储问题。
但在.net下,却大不相同。作为ActiveX控件的替代物的Winform控件,虽然可以嵌入IE,但其属性无法直接序列化到网页上。这就给我带来一个难题:我把Winform控件嵌入IE后,如何保持一些持久性数据呢?msdn(http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx)上称UserControl也实现了这个接口,但微软并不将它提供给开发者使用。
??!!
微软为什么要这样做呢?为什么不对UserControl的属性序列化问题给出直接的方案呢?让我大惑不解,同时也给我带来极大麻烦。
这样ActiveX的控件很容易地自然地实现了和网页的序列化交互。
也正是由于IE和COleControl对对该接口的默认支持,因此在创建ActiveX控件的时候,程序员很容易的就可以解决属性在网页上的存储问题。
但在.net下,却大不相同。作为ActiveX控件的替代物的Winform控件,虽然可以嵌入IE,但其属性无法直接序列化到网页上。这就给我带来一个难题:我把Winform控件嵌入IE后,如何保持一些持久性数据呢?msdn(http://msdn.microsoft.com/msdnmag/issues/02/01/UserCtrl/default.aspx)上称UserControl也实现了这个接口,但微软并不将它提供给开发者使用。
??!!
微软为什么要这样做呢?为什么不对UserControl的属性序列化问题给出直接的方案呢?让我大惑不解,同时也给我带来极大麻烦。
浙公网安备 33010602011771号