在vc中使用组件的两种方法

VC调用AutoCAD自动化的两种方法(包装类、接口)使用详解 在工程领域,使用AutoCAD时经常利用自动化(Automation)技术提高工作效率,VC调用AutoCAD自动化时有两种常用的方式,一个是包装类的方式,另一个是接口的方式,当然不只是AutoCAD,一般的支持Automation的软件都可以使用这两种方式,本文就这两种方式给出详细的使用方法,并简要总结各自的优缺点。文中代码基于VC6及以上。 阅读详情

当我们想要在vc中调用一个DLL文件所提供的组件的时候怎么办?

第一种方法: 是使用.tlb.

假如我们想调用msxml4.dll中提供的组件来操作XML文件.

 

那么首先要调用#import "msxml4.dll", 

然后你就可以使用msxml4.dll中提供的组件了,比如说

::CoInitialize(NULL);//初始化COM环境   一定要加   不要忘记!!!
 
 MSXML2::IXMLDOMDocumentPtr pDoc;
 MSXML2::IXMLDOMElementPtr xmlRoot;

    //创建DOMDocument对象
 HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
 if(!SUCCEEDED(hr))
 { 
  MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
  return ;
 }
 else
 {

 }
 //根节点的名称为Book
 //创建元素并添加到文档中
 xmlRoot=pDoc->createElement((_bstr_t)"Book");

 //设置属性
 xmlRoot->setAttribute("id",(const char *)m_strId);
 xmlRoot->Puttext((_bstr_t)(const char *)m_strAuthor);
 pDoc->appendChild(xmlRoot);
 MSXML2::IXMLDOMElementPtr pNode;
 
 //添加“author”元素
 pNode=pDoc->createElement((_bstr_t)"Author");
 pNode->setAttribute("id",(const char *)m_strId);
 pNode->Puttext((_bstr_t)(const char *)m_strAuthor);
 xmlRoot->appendChild(pNode);
 
 //添加“Title”元素
 pNode=pDoc->createElement("Title");
 pNode->Puttext((const char *)m_strTitle);
 xmlRoot->appendChild(pNode);
 
 //保存到文件
 //如果不存在就建立,存在就覆盖
 pDoc->save("d://he.xml");
 

 

重点:

1  #import "msxml4.dll"

这条语句的作用是产生.tlh和.tli文件.

 

你查看你的工程文件, 在编译后, 在debug或release文件夹中会产生两个文件msxml4.tlh, msxml4.tli.

在vc中打开它们可以看到, msxml4.tlh是头文件, 有各个接口类的定义, 而msxml4.tli是实现文件, 有接口类函数的代码.

 

我们在某些代码中可以看到这样的语句:  #import "filename.tlb"

它的作用与#import "filename.dll"是一样的, 只是有的组件会提供单独的.tlb文件, 有的会把.tlb嵌入到.dll.(嵌入的方法是生成.tlb和.dll后, 将.tlb作为资源插入到dll中,再次生成

dll, .tlb就已经存在于.dll中了)

 

 

.tlb文件叫做类型库文件, 组件的创作者用MIDL编译器编译它的IDL文件产生的.

 

com的优点之一是跨语言, 既然要跨语言, 就是要用什么语言都能写COM, 而且写出来的东西什么语言都可以使用.

 

为了实现这个目的, COM使用了IDL语言来定义接口, MID把这个IDL文件编译后,生成一个.TLB文件, 在该文件中包括组件定义等等的信息.

当VC想要调用该组件的接口时, 使用#import "filename.tlb", VC编译器会解析该filename.tlb文件, 并在你的工程目录中生成对就的filename.tli 和 filename.tlh文件, 你可以在其中查找到接口名字. 然后就可以在程序中使用了.

 

 第二种方法是使用组件的包装类.

当我们有了一个组件文件后(filename.dll), 在vc中有一个工具,可以为该组件生成一个包装类. 在vc中就可以使用这个包装类来生成对应的对象.

 

 

VC编写COM组件提供PHP调用 最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC编写COM组件来做,提供PHP调用。文章将介绍VC编写COM组件提供PHP调用,实现一个计算两个数字相加的功能。 阅读详情

相关推荐

VC疑难杂症1—在副线程中LoadStringW失败解决办法

需要这个资源句柄来知道应该在那个Module中加载资源,不切换就会出现找不到资源的错误。在主线程中调用AfxGetResourceHandle()函数,保存资源句柄。函数设置主线程保存的资源句柄也可以解决此问题。在COM组件中,调用函数开始前要加上。组件类型,在开启副线程中调用。

Z's Palace 516

在vc++工程中只使用tlb文件的用法

如果工程自己有源码, 可以字节包头文件. 如果自己没有目标COMDLL的源码,用其它方法得到tlb文件. 在工程中直接使用.得到TLB文件的方法主要是用LoadTypeLibEx, ITypeLib, ITypeInfo这几个AP和COM接口, 后续再试验. 用vc6或oleviewer去手工取tlb文件,试验没做通. 如果能编程来解决,就不做工具党^_^在工程中只使用TLB文件来调用COM接口

博客标题不能为空 5477

msxml4.dll.tlh

msxml4.dll msxml4.tlh xml解析

MSXML4操作

1.用#import 引入msxml4,#import是COM专用,他是把COM的type library转成c++能用的头文件2.IXMLDomDocument2Ptr pXMLDoc:代表整个DOM文档3.pXMLDoc调用CreateInstace初始化4.pXMLDoc调用Load把XML文件装载进来5.MSXML2::IXMLDomNodePtr   pXMLNode:代

up5p5mm的专栏 1408

msxml4.dll

运行环境:Win9X/Win2000/WinXP/Win2003 软件语言:简体中文 软件类型:国产软件 - M 授权方式:免费软件 软件大小:618 KB

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1376

使用MSXML进行基本的XML操作

最近做了一个XML相关的功能, 这里总结一下使用MSXML进行XML操作时使用到的基本方法. 对任何文件的操作无非就是"读"和"写". 由于XML的树形存储结构, 使得在处理一些结构化数据时非常好用, 比如保存配置或者记录数据等. 零. 使用MSXML 之所以选择使用MSXML, 是因为本着尽可能不引入第三方库的想法. 既然MSXML唾手可得, 那么拿来用也无妨. 首先是导入MSX

秃头披风侠的专栏 2505

【Zemax光学设计实训一】---单透镜光学设计

建立一个焦距为100mm、入瞳直径为25mm的单透镜系统,该透镜中心厚度为4mm,其两个面的曲率半径分别为100mm、-100mm,全视场2w=10°。该系统在可见光下工作,采用BK7玻璃,光阑设置在人射光线遇到的透镜的第一个光学表面;并对其展开优化。

yh的博客 3618

VS工程下的tlb, tlh, tli文件说明(COM)

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

MachiealFactory的博客 4895

RPA实战:手把手教你打造抖音自动养号机器人(含避坑指南)

本文详细介绍了如何利用RPA技术从零构建一个智能化的抖音自动养号机器人。内容涵盖环境准备、核心工具选型、拟人化行为流程设计、代码实现模块拆解,并提供了关键的避坑指南与风控对抗策略,帮助开发者高效、稳定地实现账号自动化运营。

orange的博客 561

Ubuntu环境下读取罗技G29方向盘信息

Ubuntu环境下读取罗技G29方向盘信息

工大机器人工作室 3468

VC调用com的两种方式

vc中使用com

rachel_92的博客 1047

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置1.打开ESXI的SSH2.找到不能添加的硬盘路径3.用SSH操作 1.打开ESXI的SSH 2.找到不能添加的硬盘路径 我的是第一个,找到你要添加但是不能添加的那个硬盘,点进去。 完整的路劲为:1/2 比如我的: /vmfs/devices/disks/t10.ATA_____ST500LT0122D1DG142___________________________________S3PHRNHQ (比较长哈!) 3.用SSH

AI_DOG的博客 2万+

在vb,vc中调用vb编写的DLL

假设用vb编写了一个ActiveX 组件,名称为BioxSend,里面生成一个类Test,类里面有一个方法Hello(),并且已经在电脑上注册,下面分别描述怎样在VB和vc中调用。 1. VB调用 (1) 方法1:直接在project/reference里引用该DLL,然后在使用时声明就可以了,代码如下: dim aa as new Test aa.Hello set aa=nothin

Joe_wang的专栏 4817

别再乱选保护板了!手把手教你用ABLIC S-8254A为3/4串锂电池组DIY安全保护电路

本文详细介绍了如何使用ABLIC S-8254A保护集成电路为3/4串锂电池组DIY安全保护电路。从选型策略、电路搭建到功能验证,手把手教你实现可靠的充放电保护系统,适用于无人机、电动工具等场景,确保锂电池组的安全使用。

weixin_42525264的博客 189

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1130

vc gdi+缩放图片

VC下显示JPG,BMP,GIF等图像格式(转载) 方法一:用COM组件的 IPicture接口(VC) 方法二:用GDI+(VC) EVC下显示图片 用COM组件的 IPicture接口(VC) 在OnPaint   或 OnDraw中加入下代码即可 (注意 屏蔽掉 CXXDialog::OnPaint CXX::OnDraw) dc.SetBkMod

AwillAway的专栏 8023

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WIN2K下COM组件的反注册方法。

 大家在编写ASP或VB应用程序时经常会用到COM组件。但是组件的个数或版本写多了,机器上注册的组件就会非常混乱。有时甚至都不知道程序调用的是那个版本的组件。下面就向大家介绍几种可以彻底清除系统中已经注册的组件的方法。一.            如何知道系统中有哪些组件已经被注册。有两个办法:1. 用Windows的组件服务。在WIN2K的管理工具中打开组件服务。展开“我的电脑

cyberbow的专栏 1053

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mapinfo vc二次开发

MapInfo是美国MapInfo公司的产品,对大众化的PC桌面数据可视及信息地图化应用来说,MapInfo小巧玲珑,易学易用,价位较低,是一个优选GIS产品。同时,提供了自己的二次开发平台,用户可以在平台上开发各自的GIS应用。1、MapInfo上的地理信息系统的二次开发在Windows系统中,MapInfo二次开发方法主要有2种:(1)利用自身所带的开发工具MapBas...

weixin_34273479的博客 354

给VC程序换皮肤

第一种方法: 下载SkinMagic软件 1. 首先把SkinMagicLib.h, SkinMagicLib.h, 以及.smf文件(方便加载皮肤)放到你的的VC6工程目录下; 2.在左边的Fileview卡片里面,在Resource files栏目加入SkinMagicLib.lib,在FileView卡片里面加入SkinMagicLib.h文件,...

weixin_33953384的博客 103

VC中调用COM组件的方法

                                                       VC中调用COM组件的方法 准备及条件:COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法HRESULT SayHello(void)在SDK中调用=====================================一

amd k_7的专栏 2772

使用VC连接Access数据库的两种方法

以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍。Windows平台的数据接口标准有ODBC、OLE DB、ADO和Borland的BDE接口,ODBC(Open DataBase Connectivity)只能用于访问关系型数据

攻城狮 1017

部署VC的两种方法

部署vcenter 一、集中部署vcenter 基础环境:windows防火墙关闭 1、将事先拷贝的VSCA镜像解压: 2、进入解压生出的新目录下的vcsa-ui-installer下的win32目录下: 3、运行insall.exe进入部署界面: 4、点击安装,选择下一步: 5、勾选接受许可协议条款,点击下一步: 6、选择具有嵌入式的部署,选择下一步: 7、此处root密码为1234567: 8、点击下一步出现证书警告,选择是继续部署: 9、设置设备虚拟机,此处密码为Qq12345~:

Huangzy95的博客 2071
上一篇: com套间
下一篇: ATL Internals 笔记
keepdoingit
博客等级 码龄17年 27粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值