怎样向新的ATL项目中添加之间已经做好的COM类

cau228charm 2009-09-15 08:54:15
加精
我之前建立了一个ATL项目,其中有若干C++类和COM类,现在我新建了一个ATL项目,想把之前那个ATL项目中的部分C++类和COM导入到新建的ATL项目中,目前C++类的导入比较简单,只要导入现有项,然后选择相应的.h和.cpp文件就可以了。现在关键是不知道如何快速的导入COM类?大伙有什么好的方法吗? 谢谢!!
...全文
646 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangguangjunqq 2010-03-31
  • 打赏
  • 举报
回复
发现很多人 在回复乱码啊,有十分可以拿吗 我怎么不知道啊 我也要
xwsn007 2010-01-09
  • 打赏
  • 举报
回复
MARK
jycz 2009-12-05
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
hallowwar 2009-09-18
  • 打赏
  • 举报
回复
CSDN人才辈出啊,以后多来。
caifh125 2009-09-18
  • 打赏
  • 举报
回复
顶楼主 !!!!!
做鸡真好吃 2009-09-17
  • 打赏
  • 举报
回复
没吐
darwinye 2009-09-17
  • 打赏
  • 举报
回复
up
laowang2 2009-09-16
  • 打赏
  • 举报
回复
(3)解决上面的错误的方法:
用鼠标将原始COM类中的.rgs文件拖动到如下图所示的位置:

然后用鼠标双击刚刚拖入的文件:并根据新项目的项目名称修改下面的语句

(4)接着右键单击如图

打开该文件后,添加如下图所示的语句:

重要的没显示出来.
chn_nj_ls 2009-09-16
  • 打赏
  • 举报
回复
学习ing~~~
fjiog 2009-09-16
  • 打赏
  • 举报
回复
学些了,谢谢
cau228charm 2009-09-15
  • 打赏
  • 举报
回复
解决了,果然reg文件是必须的
新的ATL项目中添加已经做好的COM类
1.首先要说的是ATL项目中除了COM类,还包括若干个C++类,在一个新的ATL项目中添加已经存在的C++类很简单,只要选择“添加”->“现有项”,然后选择相应C++类的.h和.cpp文件即可。


2.下面将描述怎样在新的ATL项目中添加已经做好的COM类
(1)已经做好的COM类在磁盘上通常包括四个文件:

当然还要包括.idl文件中关于该COM类定义的部分,注意:一个COM类在idl文件中有两个地方进行了描述,如下所示:


(2)现将.h和.cpp文件添加到新项目中,然后将原来idl文件中对该COM类描述的两个部分拷贝到新项目idl文件中的相应位置。编译,这里可能会出现一些没有包含头文件或者包含头文件错误的编译错误,可以根据实际情况进行修改。还有不要忘记根据新项目的项目名称修改下面的语句(这个语句在.h文件中):

最后会出现一个类似下面的错误:
error C2065: “IDR_FEATURES”: 未声明的标识符

(3)解决上面的错误的方法:
用鼠标将原始COM类中的.rgs文件拖动到如下图所示的位置:

然后用鼠标双击刚刚拖入的文件:并根据新项目的项目名称修改下面的语句

(4)接着右键单击如图

打开该文件后,添加如下图所示的语句:

(5)重新编译新的ATL项目,发现没有编译错误,大功告成!
cau228charm 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wshcdr 的回复:]
把该COM的 .h,.cpp,.idl文件都加入该工程
[/Quote]
我照你那样做了,比如我导入的是COM类是CFeature,会发生下面的编译错误:
error C2065: “IDR_FEATURE”: 未声明的标识符
看了一下原来的目录,除了COM的 .h,.cpp,.idl文件,还有一个.rgs文件,这个可能与资源有关,但我不知道怎么弄
wshcdr 2009-09-15
  • 打赏
  • 举报
回复
把该COM的 .h,.cpp,.idl文件都加入该工程
hankanling123 2009-09-15
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
yuanquanzhen 2009-09-15
  • 打赏
  • 举报
回复
顶顶
浪漫江湖 2009-09-15
  • 打赏
  • 举报
回复
不错,学习学习
shishiv33 2009-09-15
  • 打赏
  • 举报
回复
hehe~~~很好~
majianmin1 2009-09-15
  • 打赏
  • 举报
回复
UPPPP
aidy22 2009-09-15
  • 打赏
  • 举报
回复
UP
dingruihon 2009-09-15
  • 打赏
  • 举报
回复
地方地方地方地方到的地方的
加载更多回复(7)
皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程 皮肤控件 skin++ skincrafter SkinFeature IrisSkin 我共享的都是本人实际验证过的精品,有文档,破解后的库文件,皮肤设计工具使用教程, 1 软件界面 每个软件都要有自己的软件界面,对于软件开发来说,软件界面不一定是最重要的,但是也是相当重要的。一款软件要是可 以在界面上做好,吸引了客户的眼球,那这款软件也就相对成功了一半。 现在各行各业的软件都添加了自己的皮肤色彩,显示出了不同的特点。例如QQ,MSN,Foxmail等等,这些软件都修改 了自己软件的界面,将自己的界面化做的很完善,很漂亮。使用起来感觉很舒服。 2 软件界面的解决方案之一:使用皮肤组件 皮肤组件能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您 也不再需要花费很多时间来使得自己的应用程序更漂亮。 3 选择皮肤组件产品时需要考虑的几个因素: 3.1 产品易用性 软件控件的API及使用 是否简单易用是我们需要考虑的一个重要关键。这个问题涉及到两个方面:  是否容易整合到现有应用程序?  是否容易在的应用程序项目应用? 易用性: 界面控件产品对应用程序的影响应该越小越好,要易于在现有应用程序整合。这要求API简洁,同时也要求界面库易扩 展,兼容性强。 开发人员能否及时掌握并使用。 3.2 产品稳定性 界面库产品当前的稳定性当然是首要考虑的问题,目前可以从以下几个方面来鉴别产品的稳定性:  是否有足够多的示例Demos来演示控件库产品的各个方面的功能特性  是否已经有众多的成功案例  发布多长时间,同时是否一直有持续更。 3.3 界面配置灵活性 界面开发一个很重要的问题是界面的样式是非常灵活的。比如一个button上面可能有一个图标,但有时也有可能需 要两个图标;有时有一行文字,但有时也可能有两行不同颜色的文字。界面库产品都需要考虑这些因素。以下是我们在开发 经常遇到的问题:  控件界面的多样性。 如上面提到的不同位置多个图标,多行文字等。如果一个控件库的button只支持设置一个图标,这显然是不够灵活的,不实 用的。有人可能会说“把几张图片,切图时做到一起不就可以了么,反正一个控件也可以理解只有一个背景。” 如果涉及 到色调调整,这种做法会遇到麻烦,比如如下界面: 其间图标在色调调整时,其色调不变的。如果图标和背景做到一起,则不能做到此效果。  控件界面元素的动态变化。 控件的界面表现不是静态的,很多情况我们需要能根据程序逻辑动态调整界面表现。 比如: 这种情况在界面设计与开发是非常常见的,界面库产品需要非常容易的支持此特性。  需要根据程序逻辑自绘界面。 界面库不是万能的,界面库的设计者需要考虑尽可能的避免让客户去绘制界面,但却无法做到100%避免,由于程序逻辑的需 要,客户有时候需要自己绘制控件的某一部分。因此一个完整的界面库系统需要有自绘的支持,即在界面库绘制之后,让客 户有绘制的机会。同时也需要有一套机制来管理自绘部分的图片,颜色等资源,不然无法保证界面色调的一致性。 3.4 界面库高效性 界面库的效率是一个核心问题。糟糕的界面库效率会带来极坏的用户体验,这也应是公司在考虑一个界面控件产 品时首要考虑的问题。可以通过以下几种方式来判断界面库产品的效率:  拖拽窗口,观察是否有明显的停顿感。 可在一个系统下,找一些知名软件比较,如QQ/MSN等。如果有明显差异,则说明界面库在界面的绘制等方面存在欠缺。  拖拽窗口,观察界面控件是否有明显闪烁 如发生界面闪烁,则说明界面绘制的处理有些问题。  软件启动速度 界面库产品应该对图片等资源加载做优化,以尽可能的减少界面库加载等带来的时间开销。也可以通过比较软件启动速度来 比较界面库的效率。  软件色调调整时的效率 色调调整等操作一般会涉及到整体界面库的运算与操作,这种情况下也可以显示出不同界面库产品之间的效率差异。如果色 调调整明显带来停顿感,则说明界面库某些方面的效率偏低;一般来说DirectUI型的库这方面效率会稍微高些。 3.5 周边产品完整性 软件界面开发会涉及到很多部分,通用的界面库产品只是其的一个需求。界面开发还会涉及到其他行业相关 的特殊控件、组件需求,如果控件提供商能一站式的解决这些问题,提供完整的界面解决方案,那将极大的减少界面方面的 研发投入。 IM即时聊天客户端产品,除了通用界面库的需求外,可能还需要制作聊天窗口的RichEdit扩展控件,配置面板,系统消息组 件,这些都是一个IM客户端必须的。 3.6 产品升级及售后服务  产品是否有持续的更和升级 所选择的产品是否有持续的、及时的升级及更,是否有可靠的售后服务也是需要考虑的重点。 如果控件提供商不能对产品持续投入,则产品不能保持技术竞争力,也不能给客户以信心。一个优秀的产品成长 的过程应该是根据客户的需求及行业的发展来不断升级和完善的过程。  售后服务是否有保障 有保障的售后服务是选择软件产品的基本条件。 一般来说以公司方式运营的产品在售后服务方面更有保障,双方可以以合同或协议的方式来保证产品的售后服务质量及 持续性。 4 市面上有几款比较好的皮肤组件 4.1 Skin++(属于第二代的外挂式的界面库) 网站链接:http://www.uipower.com/index.html 4.1.1 简介:  产品易用性 界面与业务逻辑彻底分离; 支持流行的Windows操作系统; 支持所有Win32/Win64平台,包括.Net应用程序;   Skin++ 支持的开发工具: 支持VC++各种版本:VC6,VC2003,VC2005,VC2008; 支持VisualStudio. Net各种版本:VisualStudio. Net 2003, 2005, 2008;    支持 PowerBuilder 各种版本:PowerBuilder 6.0,7.0,8.0,9.0,10.0,10.5,11.0;    支持 Delphi各种版本:Delphi 4,5,6,7,8,2005,2006;    支持C++ Builder 各种版本:C++ Builder 4,5,6,2006;  产品稳定性 成功案例: Skype 华为eSpace 阿里旺旺 淘宝助理 江民杀毒软件 浩方对战平台 360安全卫士(使用DirectUI, DirectUI为上海勇进软件skn++有限公司旗下产品) 等等  界面配置灵活性 可视设计,正式版提供皮肤设计工具SkinBuilder,SkinBuilder是所见即所得的设计开发环境,可以设计用户自己风格的界 面皮肤,并实现动态换肤功能。 没有下载到试验版的SkinBuilder,我联系的skn++的客服人员,只提供了一个视频教程和一个文档Skin++BuilderHelp.chm 视频教程链接地址:http://www.uipower.com/bbs/forum-56-1.html 皮肤设计工具(SkinBuilder)使用演示: http://www.uipower.com/DirectUIBuilder/DirectUIBuilder.html 其它信息:http://www.uipower.com/bbs/index.htm  界面库高效性 下载试用skn++网站上的Skin++ 演示系统 SkinPlusPlus.VS.Net.EvalEdition.3.1.1.exe 窗口数量小于10个时,颜色改变时间延迟不明显,窗口推动不会闪烁。 窗口数量大于30时: 我测试时在MDI应用程序的主框架下建100个子窗口,改变一下界面主题颜色,从第一个子窗口改变颜色到整个界面改变 颜色,用了1分27秒。平均一秒一个窗口,内存使用28.4M左右,改变颜色过程CPU占用99%。颜色改变时间延迟明显,窗口 推动不会闪烁,但是响应速度很慢。  周边产品完整性 可视设计,提供皮肤设计工具,所见即所得的设计开发环境;    色调变换,支持皮肤色调变换,每一套皮肤都拥有N种色调风格;    皮肤资源海量,提供方便的皮肤转换工具,可以将目前主流的皮肤主题转换成Skin++格式;    支持Unicode,提供多种编码格式;    支持静态库链接,与客户程序可以进行无缝整合;    支持第三方控件;     产品升级及售后服务 产品分为:标准版,专业版,企业版,高级版,企业源码版 根据购买的版本的不同服务的项目和时间各异: 提供4到32小时的面对面开发培训 提供1到12个月的免费售后技术服务期 同步升级1个月到12个月  价格:(skin++客服人员提供的价格) skin++ directUI 标准版 价格 5800- 专业版 价格 17800 企业版 价格 38800 58800 高级企业版 价格 58800 88800 企业源码版 价格 98800 控件源码版 价格 158800 平台源码版 价格 218800 4.1.2 详细信息: 链接到<< 皮肤控件:Skin++产品详细信息>> 4.2 DSkinLite 网站链接:http://www.uieasy.cn/ 4.2.1 简介:  产品易用性 DSkinLite界面库API及XML配置语法简单,开发人员一般可以在2-3天内熟悉使用方法。DSkinLite界面库API共20个左右,常 用API函数应该在5左右。同时DSkinLite采用C++编写,专为Visual Studio开发者设计,开发者可以很容易的将DSkinLite整 合到已有软件工程或者迅速开发的软件。 DSkinLite使用XML配置界面样式,定义界面资源(字体,颜色,图片)等。借助于XML的灵活的语法,可以描述多 种多样的控件界面风格。因此不管您是否有意选择DSkinLite界面产品,您都可以下载我们的使用试用版,了解DSkinLite界 面库的设计风格,相信会让您了解一种全的界面产品设计理念,给您的界面开发带来启发。  产品稳定性 近期的客户:长江证券 广州因豪集团 易酷创 IM即时聊天的客户比较多  界面配置灵活性 需要熟悉xml语法。 界面配置灵活。DSkinLite界面库采用XML管理GDI元素,并独创了将界面元素抽象为图片,矩形,线条,文字等元素。任何 一个控件界面均可以由这些元素来组合,使用DSkinLite可以轻松配置各种界面效果。如下图所示: 由此在一个控件界面,可以灵活的配置界面元素,可以满足绝大多数界面设计需要. 动态的控制界面元素。同时DSkinLite提供相应的API可以控制这些元素(image,text,rect)的显示/隐藏,同时修正某些 属性,如image的picfile属性即更换图片,text的content属性即文本内容。这种界面需求在界面开发十分常见。  界面库高效性 DSkinLite与其他界面库相比有以下特点: 没有采用Hook所有进程消息的方式,因此没有替换系统相关对话框。DSkinLite 只是采用MFC,ATL等framework似的方式,简单替换窗口过程,截取界面绘制等消息,对应用程序来说基本上是透明的。 从这个方面讲,DSkinLite是一款轻量级的界面库,界面效率较高。 DSkinLite内部实现跟MFC似,就是使用SetWindowLong替换窗口过程,然后截获绘制相关消息绘制界面.  周边产品完整性 没有可视化皮肤编辑工具 控件的样式定义于XML,你可以在xml定义一张图片,并设置其在窗口的任何位置,包括标题栏区域,  产品升级及售后服务 DSkinLite界面库产品及服务: DSkinLite产品使用授权 软件界面开发服务 控件定制服务 ekRichEdit 控件: ekRichEdit源码版使用授权 RichEdit控件定制服务 DirectUI界面库: DirectU产品源码使用授权 控件定制服务 这个公司的UI设计也是外包的, 有专门针对IM即时聊天的扩展控件 ekRichEdit;  价格 http://www.uieasy.cn/dskinlite/purchase.html DSkinLite界面库企业版(¥12000) 企业版售后服务如下: 12个月免费Email技术支持 12个月免费版本升级 8小时免费技术培训 两个工作日技术支持响应 软件界面开发服务(¥5000起) 软件界面框架开发服务,根据客户需求及提供的UI设计图片,完成软件界面框架开发。此服务费用为5000元起,具体费用需 要根据用户的需求评估具体工作量来定。 控件定制服务(¥2000起) 如您需要一些特殊的控件,我们可以根据您的需求定制控件。此服务费用为2000元起,具体需要根据控件需求及具体工作量 来定。 4.3 其他产品及信息: 4.3.1 东日IrisSkin 支持Delphi 5/6/7/2005,C++Builder 5/6,BDS 2006,RAD Studio 2007/2009/2010/XE; Microsoft VisualStudio.NET 2002/2003/2005/2008/2010; 含有免费的SkinBuilder工具 IrisSkin 共有两个版本,一个是IrisSkin.dll 用于.Net Framework1.0/1.1 和IrisSkin2.dll 用于.Net Framework2.0版 本。详细内容见安装文件的help文档。 除此之外,东日还有两个很cool的Menu: MatrixMenu和WheelMenu。 (详细内容请参见http://www.sunisoft.cn/irisskin)。 《皮肤控件:东日 Skin详细信息.doc》 4.3.2 Appface Appface支持的语言与开发环境是我见到的最多的,在。net上面使用起来相对前面4都相对复杂一点, 不过看看那个 Demo也差不多会了,还是几个函数的使用。 (详细内容请参见http://www.appface.net)。 4.3.3 SkinSE 网站链接:http://www.skinse.com/ 是一款真正意义上适合软件界面开发的C++皮肤库。通过使用XML文件来配置GDI资源(如:图片、字体、颜色等),最大程度将 界面与逻辑分开,让程序员有更多的时间去进行软件内部的逻辑处理。SkinSE没有采用传统的HOOK修改窗口过程函数的方式 ,而是只是针对具体窗口进行界面处理。SkinSE只用到了windows几个底层的核心库,没有用到(MFC/ATL等第三方库),采用 纯API编写,采用C语言导出方式,增强可移植性。 4.3.4 DotNetSkin DotNetSkin的用法和IrisSkin差不多。此外,网站提供了几个免费的很cool的控件, Button,RadioButton, CheckBox, 那个button和codeproject的XPButton有的一拼了。 (详细内容请参见http://www.dotnetskin.net)。 4.3.5 SkinCrafter SkinCrafter地用法和Skin++有点似,都是添加一个Com引用,然后加上几句语句用来Load皮肤,和Apply皮肤。另外, SkinCrafter还另外提供了为Windows Installer换肤的软件。 (详细内容请参见http://www.skincrafter.com)。 4.3.6 SkinEngine Alcyonesoft推出了SkinEngine,支持的语言数目与Appface不相上下,用法和Skin++, SkinCrafter似。(详细内容参 见http://www.ksdev.com) 6、 DotNetMagic提供了许多漂亮的控件(http://www.dotnetmagic.com), 7、DotNetBar许多很有创意,很炫的控件(http://www.devcomponents.com) 8、Divelements 的许多漂亮的控件(http://www.divelements.co.uk) VclSkin DevExpress系列 XPMenu、 SuiPack、 rainxp、 Flatstyle、 skinengine..... 4.3.7 其他公司的界面库: 金山 自己的界面库; 瑞星 自己的界面库; 腾讯 自己的界面库,皮肤设计工具做的最精细; 迅雷7 自己的皮肤库,采用lua+xml架构,扩展性强,效率高,“万能皮肤库”。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧