网上看了很多的教程就是没有介绍怎么在vc++ 2005创建ActiveX控件的,找了半天终于找到了!
刚开始系统生成的方法,总是不能被调用,现在才知道原来是加错地方了
对外的方法应该加到接口上!具体步骤见下文:
如何使用VC++ 2005创建一个ActiveX控件呢,请听我慢慢道来。
首先选择新建项目,选择Visual C++ MFC -> MFC ActiveX 控件
......
......
......
下面我们就逐个添加控件的2个要素:事件、方法;

在类视图中选中 CFActiveXCtrl类,点击右键选择 添加->添加事件

在添加事件向导里,填写事件名称RecvData,参数类型 BSTR,参数名strData, 点击完成,事件就添加完了.
按添加将参数名添加到参数列表。
那方法该如何添加呢?(注意:是添加到接口上的)

2008下的

在类视图 ->接口->FAvtiveXlib->接口->_DFAvtiveX上点击右键选择 添加->添加方法
在添加方法向导中,返回类型选择void,方法名Show,参数类型BSTR,参数名strMsg,
选择完成,至此方法就添加完成了。
打开 FAvtiveXCtrl.cpp文件,在Show程序里添加如下测试代码
RecvData(strMsg);
void CFAvtiveXCtrl::Show(LPCTSTR strMsg){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
RecvData(strMsg);
}
现在我们来重新生成解决方案,应该没有任何错误和警告产生。
至此我们的第一个控件大功告成,现在就让我们来测试一下。
首先新建一个HTM文件,内容如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ActiveX测试</title>
</head>
<object id="MYAvtiveX" classid="clsid:42BB26D9-323D-4E06-A2B3-D04CF3C4C074" > </object>
<body>
<input type='button' onclick='MYAvtiveX.Show("Hello World!")' value='Click'> <script language='javascript' for='MYAvtiveX' event='RecvData(Message)'>

alert("响应ActiveX触发的事件成功:"+Message);
</script>
</body>
</html>
其中的classid="clsid:42BB26D9-323D-4E06-A2B3-D04CF3C4C074"代表我们刚刚生成的控件clsid可从FAvtiveX.idl文件中查到:
// CFAvtiveXCtrl 的类信息
[ uuid(42BB26D9-323D-4E06-A2B3-D04CF3C4C074),
helpstring("FAvtiveX Control"), control ]
coclass FAvtiveX{
[default] dispinterface _DFAvtiveX;
[default, source] dispinterface _DFAvtiveXEvents;};
保存HTM文件,用IE打开,IE会提示“已限制此网页运行可以访问计算机的脚本或ActiveX控件”,请单击选择允许阻止的内容,在弹出的安全警告窗口选择“是”,然后你就可以点击我们刚刚创建的按钮,IE会问你想不想交互之类的话,你选择“是”即可看到如下窗口弹出:
本文详细介绍了如何使用VC++2005创建ActiveX控件的过程,包括添加事件和方法的具体步骤,并提供了测试示例。

2372

被折叠的 条评论
为什么被折叠?



