用ATL和MFC来创建ActiveX控件
2010-07-25 20:46:35 来源:WEB开发网属性持续
MFC的属性持续机制是非常直观易懂的。从编程的观点来看,所有你要做的是填写ControlWizard已经提供的DoPropExchange函数。DoPropExchange将控件属性的状态从某些成员变量移动到持续媒体中。
MFC具有3个属性持续机制,内置于ColeControl:IPersistPropertyBag, IPersistStorage和 IPersistStream[Init]。所有这些持续机制都封装在MFC的CpropExchange类中,与当你需要serialize 一个文档时Carchive为你包装一个文件非常相似。客户方选择使用3个接口中的一个保持对象。不管使用了哪种持续机制,执行总落在控件的DoPropExchange函数中。
下面的代码显示了MFCMsgTraffic控件是怎样将它的颜色和时间间隔属性保存起来的:
void CMFCMsgTrafficCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
PX_Color(pPX, "GraphLineColor", m_graphLineColor);
PX_Long(pPX, "GraphInterval", m_interval);
}
MFC包括了若干PX_函数在控件和存储媒体间转移数据,它们是:
PX_Short
PX_UShort
PX_Long
PX_ULong
PX_Color
PX_Bool
PX_String
PX_Currency
PX_Float
PX_Double
PX_Blob
PX_Font
PX_Picture
PX_IUnknown
PX_VBXFontConvert
PX_DataPath
在ATL中管理控件属性持续涉及到两个步骤。第一步是添加你希望客户能够使用的持续接口的ATL实现。ATL包括了类IPersistStorageImpl, IPersistStreamInitImpl, 和 IPersistPropertyBagImpl, 它们实现了三个主COM持续机制。
第二步是在控件的属性映射中插入属性。当一个客户请求保存或者加载基于ATL的控件时,ATL检查控件的属性映射表,将控件的属性输出到存储媒介,或者从存储媒介输入。属性映射表是属性名字、DISPIDs的一个表,有时还包括一个属性页面GUID。ATL遍历词表查找该持续哪个属性,并将其持续到合适的媒体。图5显示了继承了持续接口实现和一个属性映射的ATLMsgTraffic控件。
- ››创建SQL2005自动备份,定期删除的维护计划
- ››创建动态表单 javascript
- ››MFC中有多个slider时OnHScroll函数判断方法
- ››MFC自绘按钮
- ››创建基于PPTP的站点到站点VPN连接:ISA2006系列之...
- ››创建基于L2TP的站点到站点的VPN连接:ISA2006系列...
- ››创建一个Twisted Reactor TCP服务器
- ››创建Windows Mobile上兼容性好的UI 程序
- ››创建android的Service
- ››创建远古部落环境与原住民角色
- ››创建并扩展Apache Wicket Web应用
- ››创建不在任务条中显示窗口按钮的应用
更多精彩
赞助商链接