WEB开发网
开发学院软件开发VC 用ATL和MFC来创建ActiveX控件 阅读

用ATL和MFC来创建ActiveX控件

 2010-07-25 20:46:35 来源:WEB开发网   
核心提示:属性持续MFC的属性持续机制是非常直观易懂的,从编程的观点来看,用ATL和MFC来创建ActiveX控件(8),所有你要做的是填写ControlWizard已经提供的DoPropExchange函数,DoPropExchange将控件属性的状态从某些成员变量移动到持续媒体中,ATL遍历词表查找该持续哪个属性,并将其持续

属性持续

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控件。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:ATL MFC 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接