VC6下创建一个简单的ActiveX控件

翻译|其它|编辑:郝浩|2004-01-20 10:55:00.000|阅读 2673 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在软件开发过程中,你可能要向你的开发团队,提供某些编程接口。这里可能有几种的选择方式。COMDLL或者直接用源代码类来提供。还有一种非常方便的方法就是通过ActiveX控件来提供。它也是语言无关,可以在DelphiVBVC下使用。

本文就来讲述如何利用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属性被改变时的通知事件。实现很简单,请看如下步骤:

在类CtmpOcxCtrlMFC 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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP