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与uCOS-II结合使用,意味着开发者可以利用VC6.0的强大开发工具来构建基于uCOS-II的应用程序。这涉及到以下步骤和知识点: - **移植uCOS-II到目标硬件**:首先,需要将uCOS-II操作系统移植到目标微控制器上,...
**VC6.0编程实例--001:启动界面** 在Windows应用程序开发中,启动界面是用户首次接触软件时的第一印象,它通常包含程序图标、公司标识、版本信息以及可能的加载进度条等元素。VC++ 6.0是Microsoft Visual Studio...
**VC6.0小助手——全面解析VC++6.0编程辅助工具** VC6.0,全称为Microsoft Visual C++ 6.0,是微软公司推出的一款经典且强大的C++集成开发环境。它在20世纪90年代末至21世纪初广泛应用于软件开发,尤其在Windows...
本实例“VC6.0编程实例--003”着重讲解如何通过编程手段获取计算机的硬件信息,如CPU型号、内存容量、硬盘信息等。 首先,我们需要了解Windows API(应用程序接口)在获取硬件信息中的作用。Windows API提供了丰富...
vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列实时行情数据说明 vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列实时行情数据说明 vc6.0代码---获取美股实时行情----阿里巴巴-------加入每列...
C语言vc6.0完美运行源码---对对碰源码
然而,随着开发环境的更新换代,原本在VC6.0下编译通过的UCOS-II代码在更高版本的Visual Studio(如VC2005及以上)中可能会遇到问题。本篇将详细探讨如何在VC6.0环境下编译UCOS-II,以及为什么在更高版本的编译器中...
一款使用VC6.0或VS2005-2012开发必备的工具Visual assist x(破解版)。永久破解。不反弹,哈哈。本人就是使用这个
在信息技术领域,开发应用程序是常见的工作,而使用Visual C++ 6.0(简称VC6.0)进行编程是一种经典且实用的方式。本文将深入探讨一个基于VC6.0的小型项目——人事考勤系统,该系统与SQL Server 2008数据库进行交互...
策略为王------vc6.0------源代码 (123)-----在macd指标交叉买卖点标注文字出现.rar 主要解决文字出现的x坐标和y坐标的设置,,,,,,,,, 模仿通达信指标界面,,,,,,为加入自己开发的量化交易指标做前期...
《VC6.0 SRC 与 glibc-2.21:深入理解C函数库源码》 在软件开发领域,了解底层的实现细节是提升技术水平的重要途径。本资源包含两个关键部分:VC6.0的源码和glibc-2.21源码,为开发者提供了深入了解C函数库实现的...
C语言vc6.0完美运行源码---华容道源码
策略为王源代码无删减版本------vc++6.0-------可以升级到vc2024-----64位---- 策略为王源代码无删减版本------vc++6.0-------可以升级到vc2024-----64位---- 策略为王源代码无删减版本------vc++6.0-------可以升级...
在编程世界中,效率至关重要,尤其是在使用经典的Visual C++ 6.0(简称VC6.0)这样的集成开发环境(IDE)时。标题提到的"VC6.0辅助编程--打字更快更省力、自动查错、括号匹配检测"是一种能够提升编程体验的小工具,...
### VC6.0调用MATLAB生成的COM组件 #### 一、背景介绍与环境配置 在探讨如何利用Visual C++ 6.0 (简称VC6.0)调用MATLAB生成的COM组件之前,我们需要了解一些基本的概念和技术背景。 **COM (Component Object ...
VC6.0是微软在1998年推出的一款集成开发环境,主要用于编写C++代码,它包含了Visual C++编译器、调试器以及MFC(Microsoft Foundation Classes)库等组件,是许多程序员入门和开发Windows应用程序的首选工具。...
**VC6.0开发助手详解** “VC6.0开发助手”是一款专为Microsoft Visual C++ 6.0(简称VC6.0)设计的增强工具,它旨在提高程序员的编程效率,通过智能识别和自动补全功能,使得在编写C++代码时更加便捷。这款工具的...
总之,"VC6.0助手"通过增强VC6.0的原有功能,为开发者带来更为便捷的开发体验,即使在现代开发工具层出不穷的今天,它仍然是VC6.0开发者不可或缺的得力伙伴。无论是初学者还是经验丰富的程序员,都可以通过这个工具...