VC2010开发MFC ActiveX控件基础教程

时间:2009-12-22 作者:和尚释然

一.        创建MFC ActiveX项目

1.       打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。

 

2.       输入项目名称为“ActiveXDemo”和项目位置。点击“确定”按钮,打开向导对话框。

                              

 

3.       选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。

二.        添加控件方法

VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。

1.       点击“视图”,打开“类视图”窗口。

2.       展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。点击鼠标右键,选择“添加”下的“添加方法”。

3.       打开添加方法向导窗口。因为我们是添加一个加法方法,所以我们设置的返回类型为LONG型,方法名设为AddFun,添加两个LONG类型参数Add1Add2

 

4.       其它为默认设置,点击“完成”按钮完成添加方法。接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

 

5.       打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“return Add1 + Add2;”语句。

 

6.       最后生成项目。

三.        测试ActiveX控件

经过上面操作我们已经生成了OCX控件文件。接下来的步骤就是要将这个OCX控件嵌入在Html页面中,通过Javascript来调用控件方法来测试我们的OCX控件是否能正常运行。

1.       我们用“EditPlus”新建一个Html文件,具体内容如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>ActiveX测试</title>

<script language = 'javascript'>

 

         function AddFun()

         {

                   var iResult = MYAvtiveX.AddFun(12, 11);//调用ActiveX控件的AddFun方法。

                   alert(iResult);

         }

</script>

</head>

 

<body>

<object id="MYAvtiveX" classid="clsid: F0E7128D-E311-42F1-A0BA-88397960732E"> </object>

<fieldset>

<legend>MyActiveX测试</legend>

    <table width="100%" border="1">

      <tr>

        <td width="20%"><input type='button' οnclick='AddFun()' value='AddFun'> </td>

      </tr>   

    </table>

</fieldset>

</body>

</html>

上面的“classid”我们可以打开“ActiveXDemo.idl”文件获得:

 

2.       最终的Html页面显示效果如下,点击“AddFun”按钮,弹出计算结果提示框。



========================注意点========================

 

1、  运行时许可证默认不勾选: 如果勾上,生成时会多出一个文件.lic , 只有拥有许可的用户才可以调用ocx插件

 

 

2、工程生成好之后,右键工程属性,对其进行配置:(注意点 已在途中勾出)

 

 

3、 在 链接器—常规—注册输入选“是”, 如果编译的时候出现,该错误提醒,有2个可能。 第一种: 你运行的VS2010 ,在Win7下,不是管理员级别。所以会出现权限不够的问题。 第二种: 缺少对应的dll, 此时你可以使用 C++ 的工具 dependency ,对ocx 进行分析。查看到底缺少了那些dll 。然后下载到对应的 dll 将其 放入system32 目录下,重新用工具再次分析。

 

4、 出现无法打开 ocx的编译错误: 这个是由于你上次运行的 IE 浏览器没有关闭,ocx被占用导致。

 

最后附上 一段 批处理的代码,稍微可以方便点。。。

 

 

Java代码   收藏代码
  1. %SystemRoot%\system32\regsvr32.exe  safeIpos2.ocx  
  2. copy   safeIpos2.ocx   %SystemRoot%\system32  

 将其保存成 .bat 文件,运行。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会尽力回答您的问题。 首先,您需要在您的MFC项目中添加VSFlexGrid ActiveX控件。添加方法是:打开“工具”菜单,选择“工具栏”中的“工具箱”,然后在工具箱中右键单击,并选择“添加/删除项目”选项。接下来,在弹出的“添加/删除项目”对话框中,选择“控件”选项卡,然后在列表中找到“VSFlexGrid”,选择它并单击“添加”按钮。 然后,您需要创建一个自定义的视图类,并从CView类派生。您可以在VC6中使用“添加类”向导来创建它。在向导中,您需要选择“视图类”选项,并指定您的新类的名称和基类。在此示例中,让我们称它为“CVSFlexGridView”。 接下来,您需要在您的新视图类中添加一个成员变量来保存VSFlexGrid控件的指针。您可以使用“类向导”中的“添加变量”功能来添加它。在“添加变量”对话框中,选择您的VSFlexGrid控件的ID,并将其声明为一个指向VSFlexGrid控件的指针类型。例如: ``` class CVSFlexGridView : public CView { public: CVSFlexGridView(); virtual ~CVSFlexGridView(); protected: VSFlexGrid *m_pFlexGrid; // VSFlexGrid控件指针 // ... }; ``` 现在,您需要在您的新视图类中覆盖CView类的一些虚拟函数,以便在视图创建和销毁时创建和销毁VSFlexGrid控件。例如: ``` CVSFlexGridView::CVSFlexGridView() { m_pFlexGrid = NULL; } CVSFlexGridView::~CVSFlexGridView() { if (m_pFlexGrid != NULL) { m_pFlexGrid->DestroyWindow(); delete m_pFlexGrid; } } BOOL CVSFlexGridView::PreCreateWindow(CREATESTRUCT& cs) { // 在此处修改视图窗口样式和扩展样式 // 调用基类函数 return CView::PreCreateWindow(cs); } void CVSFlexGridView::OnInitialUpdate() { CView::OnInitialUpdate(); // 创建VSFlexGrid控件 if (m_pFlexGrid == NULL) { m_pFlexGrid = new VSFlexGrid; m_pFlexGrid->Create(NULL, _T("VSFlexGrid"), WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, 0); } } void CVSFlexGridView::OnDraw(CDC* /*pDC*/) { // 不需要实现此函数 } ``` 最后,您需要将您的新视图类与您的文档类相关联。您可以在应用程序初始化代码中完成此操作。例如: ``` BOOL CMyApp::InitInstance() { // ... // 注册文档模板 CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子窗口框架 RUNTIME_CLASS(CVSFlexGridView)); // 自定义视图类 AddDocTemplate(pDocTemplate); // ... } ``` 好了,以上就是一个简单的示例,演示了如何在VC6中创建一个MFC视图模式封装第三方OCX的VSFlexGrid控件。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值