在软件开发过程中,你可能要向你的开发团队,提供某些编程接口。这里可能有几种的选择方式。COM
,DLL
或者直接用源代码类来提供。还有一种非常方便的方法就是通过ActiveX
控件来提供。它也是语言无关,可以在Delphi
、VB
、VC
下使用。
本文就来讲述如何利用VC6.0
来创建一个ActiveX
组件,这其中主要实现了如下的功能:
添加属性、添加方法,添加事件和提供属性编辑窗口这四大功能。
下面我们就以实例来说明。
第1
步,利用VC
向导,建立一个“MFC ActiveX ControlWizard”
工程,项目名可定为“TmpOcx”
。一路默认下去完成向导。
第2
步,在CtmpOcxCtrl
类的“MFC ClassWizard”
里切换到“Automation”
页,添加属性和方法。如图1
![](http://www.vchelp.net/vchelp/file2003_2/a_image001.jpg)
(图1
)
点击“Add Property
”按钮,添加一个“MsgContext
属性,类型为BSTR,
如图2
。
![](http://www.vchelp.net/vchelp/file2003_2/a_image002.jpg)
(图2
)
点击
“Add Method
”添加一个“ShowMessage
”方法,没有返回值。如图3
。
![](http://www.vchelp.net/vchelp/file2003_2/a_image003.jpg)
(图 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
![](http://www.vchelp.net/vchelp/file2003_2/a_image004.jpg)
(图4
)
(2
)给输入框控件添加关联变量,也是利用MFC Classwizards
来实现,如图:
![](http://www.vchelp.net/vchelp/file2003_2/a_image005.jpg)
(图5
)
(3
)
在CtmpOcxCtrl
类的DoPropExchange
方法里添加如下代码,关联属性。
PX_String(pPX,"MsgContext",m_MsgContext,"
欢迎使用此Acitvex
,呵呵");
至此,除了事件之外,别的功能都实现了。
第5
步,添加事件。
在这里,我们添加一个当MsgContext
属性被改变时的通知事件。实现很简单,请看如下步骤:
在类CtmpOcxCtrl
的MFC ClassWizards
向导里的“Activex Event”
页里,添加一个事件,如图6
。
![](http://www.vchelp.net/vchelp/file2003_2/a_image006.jpg)
(图6
)
(2)
在CTmpOcxCtrl
类的SetMsgContext
方法里,触发MsgContext
值变的事件。
void CTmpOcxCtrl::SetMsgContext(LPCTSTR lpszNewValue)
{
if (m_MsgContext.Compare(lpszNewValue) != 0 )
{
m_MsgContext = lpszNewValue;
FireOnMsgChange();
SetModifiedFlag();
}
}
最后编译运行,将自动注册此Ocx
。