急!是否有人成功地在ATL Control中实现了用户属性的Persistence?

Lii 2001-04-12 03:51:00
大家好!
我在编写ATL Control时遇到了一个棘手的问题. 假设我的ATL Control向用户提供一个字符型的属性"Caption". 默认值为"Control1".当某个VB程序使用该ATL Control时,用户在Design Mode下将该属性赋值为"myControl",然后他便存盘退出了VB.下一次他再打开该VB程序时,"Caption"属性的值很明显应为"myControl",也就是他上次存盘的值.这便是属性的Persistence.由于VB使用PropertyBag实现Persistence,于是我在ATL Control进行了如下操作:
1. 在我的ATL Control的继承类列表中添加了"public IPersistPropertyBagImpl<CMyATL>";
2. 在BEGIN_COM_MAP(CMyATL)/END_COM_MAP()宏中添加了"COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag)";
3. BEGIN_PROP_MAP(CMyATL)/END_PROP_MAP()宏中添加了"PROP_ENTRY("Caption", 1, CLSID_NULL)", 其中第二个参数"1"是属性"Caption"的ID号.
根据MSDN上的介绍,以上三步便可实现我自定义的属性"Caption"的Persistence.但事实却恰恰相反,有了以上三步后,VB在Design Mode下Load我的ATL Control时竟然出错!不知是否有人遇到过相同的问题,是不是我上述三步操作不对?正确的方法应该是什么?Please help and thanks in advance....
...全文
60 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧