`
chinamming
  • 浏览: 151264 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用VC6.0开发COM组件 - 傻瓜式,不讲理论,只讲实例

 
阅读更多

1.创建一个ATL COM AppWizard工程,如图:

2. 选择 Dynamic link Library (DLL),其它两个请百度,或参照其它文档。如下图:

3. 添加一个自己的COM类,用于导出需要用到的接口。步骤如下:

选择类视图->右键工程->新建类(New Class) 如下图:

弹出对话框后,选择 ATL CLASS,输入类名,如下图:

然后,在类视图中,你会看到:

多了一个接口和一个类,这都是你刚才添加的。

4. 添加导出接口。

右键 "IHelloWorld"->AddMethod,如下图:

弹出对话框,填写函数名及参数即可,如下图:

然后,我们再看 IHelloWord, 如下图:

接口已经有了,而且它已经自动在 CHellowWorld 类中加了实现代码,双击这个上图中的选中的Show就会跳转到定义,如下图:

作为示例,我们弹出一个消息框好了,代码如下:

STDMETHODIMP CHellowWorld::Show(int iWhat)
{
    // TODO: Add your implementation code here
    TCHAR szMsg [512] = {0};
    sprintf(szMsg, "Hello World - iWhat:%d", iWhat);
    MessageBox (NULL, szMsg, "First Com Project", MB_OK | MB_TOPMOST);
    return S_OK;
}

到这里,我们编译生成一下。

5. 注册COM组件,可以使用命令行进行注册,regsrv32 xxx.dll,不过为了方便,我们不准备使用手工,我们可以在链接完成后直接注册,设置工程,设置如下:

6.编写调用例程。

创建一个控制台项目,项目源码如下:

复制代码
#include "stdafx.h"
#include "../ComDemo.h"
#include "../ComDemo_i.c"

int main(int argc, char* argv[])
{
    CoInitialize(NULL);
    IHellowWorld* pHello = NULL;
    IUnknown * pUnk = NULL;
    HRESULT hr;
    //(2)创建实例对象,获取IUnknown接口指针
    hr = ::CoCreateInstance(
        CLSID_HellowWorld,
        NULL,
        CLSCTX_INPROC_SERVER,    // 以进程内组件 DLL 方式加载
        IID_IUnknown,            // 想取得 IUnknown 接口指针
        (LPVOID *) &pUnk);
    if( FAILED( hr ) )  
    {
        printf("没注册吧\n");
        return -1;
    }
    
    hr=pUnk->QueryInterface(IID_IHellowWorld,(LPVOID *)&pHello);
    if (FAILED (hr)) {
        printf("QueryInterface hello2 失败\n");
        return -1;
    }
    pHello->Show (2);
    CoUninitialize();
    return 0;
}
复制代码

其中的 ComDemo.h 和 ComDemo_i.c,请看一下COM组件的文件视图,截图如下:

然后运行一下就可以看到效果了。

参考资料:

http://hi.baidu.com/laocui172/item/c0bac2ab45e35f9e151073ae

http://xulin.blog.51cto.com/264387/84852

分享到:
评论

相关推荐

    实例程序VC6.0 -----------DAO实例程序

    实例程序VC6.0 -----------DAO实例程序

    vc6.0可运行uCOS-II

    将VC6.0与uCOS-II结合使用,意味着开发者可以利用VC6.0的强大开发工具来构建基于uCOS-II的应用程序。这涉及到以下步骤和知识点: - **移植uCOS-II到目标硬件**:首先,需要将uCOS-II操作系统移植到目标微控制器上,...

    VC6.0编程实例--001

    **VC6.0编程实例--001:启动界面** 在Windows应用程序开发中,启动界面是用户首次接触软件时的第一印象,它通常包含程序图标、公司标识、版本信息以及可能的加载进度条等元素。VC++ 6.0是Microsoft Visual Studio...

    VC6.0小助手----VC编程帮助

    **VC6.0小助手——全面解析VC++6.0编程辅助工具** VC6.0,全称为Microsoft Visual C++ 6.0,是微软公司推出的一款经典且强大的C++集成开发环境。它在20世纪90年代末至21世纪初广泛应用于软件开发,尤其在Windows...

    VC6.0编程实例--003

    本实例“VC6.0编程实例--003”着重讲解如何通过编程手段获取计算机的硬件信息,如CPU型号、内存容量、硬盘信息等。 首先,我们需要了解Windows API(应用程序接口)在获取硬件信息中的作用。Windows API提供了丰富...

    vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列实时行情数据说明

    vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列实时行情数据说明 vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列实时行情数据说明 vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列...

    C语言vc6.0完美运行源码-对对碰源码

    C语言vc6.0完美运行源码---对对碰源码

    VC6.0编译的ucos-II

    然而,随着开发环境的更新换代,原本在VC6.0下编译通过的UCOS-II代码在更高版本的Visual Studio(如VC2005及以上)中可能会遇到问题。本篇将详细探讨如何在VC6.0环境下编译UCOS-II,以及为什么在更高版本的编译器中...

    使用VC6.0或VS2005-2012开发必备的工具Visual assist x(破解版)

    一款使用VC6.0或VS2005-2012开发必备的工具Visual assist x(破解版)。永久破解。不反弹,哈哈。本人就是使用这个

    vc6.0小项目--人事考勤

    在信息技术领域,开发应用程序是常见的工作,而使用Visual C++ 6.0(简称VC6.0)进行编程是一种经典且实用的方式。本文将深入探讨一个基于VC6.0的小型项目——人事考勤系统,该系统与SQL Server 2008数据库进行交互...

    策略为王------vc6.0------源代码 (123)-----在macd指标交叉买卖点标注文字出现.rar

    策略为王------vc6.0------源代码 (123)-----在macd指标交叉买卖点标注文字出现.rar 主要解决文字出现的x坐标和y坐标的设置,,,,,,,,, 模仿通达信指标界面,,,,,,为加入自己开发的量化交易指标做前期...

    VC6.0SRC 与 glibc-2.21

    《VC6.0 SRC 与 glibc-2.21:深入理解C函数库源码》 在软件开发领域,了解底层的实现细节是提升技术水平的重要途径。本资源包含两个关键部分:VC6.0的源码和glibc-2.21源码,为开发者提供了深入了解C函数库实现的...

    C语言vc6.0完美运行源码-华容道源码

    C语言vc6.0完美运行源码---华容道源码

    策略为王源代码无删减版本-vc++6.0-可以升级到vc2024-64位

    策略为王源代码无删减版本------vc++6.0-------可以升级到vc2024-----64位---- 策略为王源代码无删减版本------vc++6.0-------可以升级到vc2024-----64位---- 策略为王源代码无删减版本------vc++6.0-------可以升级...

    VC6.0辅助编程--打字更快更省力、自动查错、括号匹配检测

    在编程世界中,效率至关重要,尤其是在使用经典的Visual C++ 6.0(简称VC6.0)这样的集成开发环境(IDE)时。标题提到的"VC6.0辅助编程--打字更快更省力、自动查错、括号匹配检测"是一种能够提升编程体验的小工具,...

    VC6.0调用MATLAB生成的COM组件

    ### VC6.0调用MATLAB生成的COM组件 #### 一、背景介绍与环境配置 在探讨如何利用Visual C++ 6.0 (简称VC6.0)调用MATLAB生成的COM组件之前,我们需要了解一些基本的概念和技术背景。 **COM (Component Object ...

    VC6.0 完美卸载工具

    VC6.0是微软在1998年推出的一款集成开发环境,主要用于编写C++代码,它包含了Visual C++编译器、调试器以及MFC(Microsoft Foundation Classes)库等组件,是许多程序员入门和开发Windows应用程序的首选工具。...

    VC6.0开发助手

    **VC6.0开发助手详解** “VC6.0开发助手”是一款专为Microsoft Visual C++ 6.0(简称VC6.0)设计的增强工具,它旨在提高程序员的编程效率,通过智能识别和自动补全功能,使得在编写C++代码时更加便捷。这款工具的...

    vc6.0助手,适用于vc6.0开发环境

    总之,"VC6.0助手"通过增强VC6.0的原有功能,为开发者带来更为便捷的开发体验,即使在现代开发工具层出不穷的今天,它仍然是VC6.0开发者不可或缺的得力伙伴。无论是初学者还是经验丰富的程序员,都可以通过这个工具...

Global site tag (gtag.js) - Google Analytics