在软件开发过程中,你可能要向你的开发团队,提供某些编程接口。这里可能有几种的选择方式。COM,DLL或者直接用源代码类来提供。还有一种非常方便的方法就是通过ActiveX控件来提供。它也是语言无关,可以在Delphi、VB、VC下使用。
本文就来讲述如何利用VC6.0来创建一个ActiveX组件,这其中主要实现了如下的功能:
添加属性、添加方法,添加事件和提供属性编辑窗口这四大功能。
下面我们就以实例来说明。
第1步,利用VC向导,建立一个“MFC ActiveX ControlWizard”工程,项目名可定为“TmpOcx”。一路默认下去完成向导。
第2步,在CtmpOcxCtrl类的“MFC ClassWizard”里切换到“Automation”页,添加属性和方法。如图1

(图1)
点击“Add Property”按钮,添加一个“MsgContext属性,类型为BSTR,如图2。

(图2)
点击 “Add Method”添加一个“ShowMessage”方法,没有返回值。如图3。

(图 3)
第3步:实现属性和方法。
在CtmpOcxCtrl类里添加一个私有变量m_MsgContext。
Private:
CString m_MsgContext;
(2)属性实现方法:
BSTR CTmpOcxCtrl::GetMsgContext()
{
return m_MsgContext.AllocSysString();
}
void CTmpOcxCtrl::SetMsgContext(LPCTSTR lpszNewValue)
{
if (m_MsgContext.Compare(lpszNewValue) != 0 )
{
m_MsgContext = lpszNewValue;
SetModifiedFlag();
}
}
(3) ShowMessage实现方法:
void CTmpOcxCtrl::ShowMessage()
{
AfxMessageBox(m_MsgContext);
}
第4步:编辑属性编辑框。
(1)在资源编辑器,编辑属性对话框如图4

(图4)
(2)给输入框控件添加关联变量,也是利用MFC Classwizards来实现,如图:

(图5)
(3) 在CtmpOcxCtrl类的DoPropExchange方法里添加如下代码,关联属性。
PX_String(pPX,"MsgContext",m_MsgContext,"欢迎使用此Acitvex,呵呵");
至此,除了事件之外,别的功能都实现了。
第5步,添加事件。
在这里,我们添加一个当MsgContext属性被改变时的通知事件。实现很简单,请看如下步骤:
在类CtmpOcxCtrl的MFC ClassWizards向导里的“Activex Event”页里,添加一个事件,如图6。

(图6)
(2)在CTmpOcxCtrl类的SetMsgContext方法里,触发MsgContext值变的事件。
void CTmpOcxCtrl::SetMsgContext(LPCTSTR lpszNewValue)
{
if (m_MsgContext.Compare(lpszNewValue) != 0 )
{
m_MsgContext = lpszNewValue;
FireOnMsgChange();
SetModifiedFlag();
}
}
最后编译运行,将自动注册此Ocx。