vs2010增添ATL类的时候为什么分ATL vs2015做简单计算器对象,ATL控件,ATLXXX

VS 2015 的跨平台特性对 Qt 会带来多大的冲击呢? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="5,371分享邀请回答4426 条评论分享收藏感谢收起doc.qt.io/qt-5/qtquick-demos-stocqt-example.html),在Win8、Android、WP上面显示效果都非常好。4. QtCreator这个IDE与Qt配合起来非常完美,在VS里面使用Qt总感觉怪怪的。如果不使用Qt,由于C++语法过于复杂,VS这种宇宙级的IDE也不能像c#那样来IntelliSense C++,但无论如何还是要强于Qt Creator的。5. VS2015中C++的跨平台,肯定不会是一次编写处处运行(除非写的是标准C++)。如果带有界面(Win的MFC、WTL,Linux的X11)、或者有用到POSIX、WIN API,怎么可能不修改代码直接跨平台?而Qt有自己的一套GUI、Networks等框架,如果严格使用Qt SDK的标准来开发,完全可以不修改代码,在各个平台编译就行。8515 条评论分享收藏感谢收起温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
一个傻瓜,为了一个不可能的梦在拼搏。
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
& 名称就叫做TestATL吧,点击确定后,会弹出ATL项目向导,这里注意下,如果你不怕麻烦,直接跳过,要是怕麻烦的话,就选择支持MFC,可能对程序而言,增大了冗余量,毕竟一个MFC类库不小,但是我怕麻烦,呵呵,就选上了。插个图: 对了,顺便讲讲应用程序类型:如果是开发过程,建议选择动态链接库,就是进程内部运行,如果你的程序较大,就知道它有多快了。至于可执行文件,最后会产生一个可执行的(exe)的COM类型。最后呢,服务(EXE),我没有发言权,因为没有用过,但是从资料上读过,是利用NT服务运行的,后面闲下来,我在整整。 好了,言归正传,上面搞定后,对TestATL进行添加类,一般对于刚开始学习ATL而言,建议选择ATL简单对象,这个基本可以应付你以后很多情况。我们给这个新类创建名称,NewC& 你填写了名称,后面的框就随后自己生成了,但是此时注意:ProgID,最好自己生成,不然后面自己调用很麻烦!比如加一个TestATL.NewCom,这个不是绝对的,看你自己喜好了。最好点击完成。 看看类视图,看到接口INewCom,右击添加方法Hello:&& 这不,接口搞定了。自己在CNewCom中,自己对其定义。例如:&对了,我使用的是多字节。到目前为止,你的COM控件已经生成了。F7下,就准备测试吧。嗯,创建一个MFC对话框,项目你就称为test_TestATL吧,无所谓了。在stdafx.h中,插入#import "D:\\VS项目\\TestATL\\TestATL\Debug\\TestATL.tlb"自己的路径啊,不要照抄~自己添加一个按钮Button1,添加下面的内容:&接下来,为其添加接口的类,自然把TestATL_i.c和TestATL_i.h添加到该MFC对话框了。运行下,必须出错:fatal&error&C1010:&unexpected&end&of&file&while&looking&for&precompiled&header&directive&呵呵,放心了,你的代码没错,是预编译搞的破事,你们可以看看stdafx.h的作用,一把双刃剑。一般程序小,你就alt+F7,把预编译头选择为取消:&接着最后了:&&好了,讲完了,希望能帮助你。
阅读(2872)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'VS2010创建ATL简单例子及MFC调用测试(原创)',
blogAbstract:'\t最近忙着做了一阵底层接口,也借鉴了网上很多资料,但是感觉不全,用的很不舒服,刚好自己这段时间也有了些经验,想分享给大家,重在大家互相指点。\t首先,新建一个ATL项目:&\t名称就叫做TestATL吧,点击确定后,会弹出ATL项目向导,这里注意下,如果你不怕麻烦,直接跳过,要是怕麻烦的话,就选择支持MFC,可能对程序而言,增大了冗余量,毕竟一个MFC类库不小,但是我怕麻烦,呵呵,就选上了。插个图:',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'一个傻瓜,为了一个不可能的梦在拼搏。',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}阅读(1058)
&&&& ATL提供了一种分层实现IUnknown的方法,CComXXXThreadModel类表示的最上层,为存放在STA和MTA中的对象所要求的同步提供了&#8220;辅助函数&#8221;&#174;1和&#8220;类型定义&#8221;&#174;2。第二层是CComObjectRootEx,他利用线程模型类来支持恰好的&#8220;线程安全&#8221;的AddRef和Release实现以及对象级的锁定,他的基类是CComObjectRootBase。在&#8220;我们的类&#8221;&#174;3中使用&#8220;相关宏&#8221;&#174;4建立了一个接口映射表。CComObjectRootBase利用这个接口映射表建立了一个表驱动的QueryInterface实现。最后一层由CComObject或者其他类似的类&#174;5提供,他们根据对象的生命周期和实体身份的要求提供QI、AddRef、Release的实现。&&& 为了允许每个类都可以定义自己的生命周期和实体身份,每个类定义自己的_CreatorClass&#174;6来定义适当的创建者。-----------------------------------------------------------------------------------------------------------------------名词解释:&#174;1、指Increment、Decrement两个函数的定义。&#174;2、指CComXXXThreadModel定义中的几个typedef。&#174;3、指从CComObjectRootEx和任意数量的接口派生,并且提供接口成员函数的实现(不包括IUnknown的几个虚函数实现)的类。&#174;4、类似这样:BEGIN_COM_MAP(Cxx)&COM_INTERFACE_ENTRY(Ixx)END_COM_MAP()这几个宏建立了接口映射表。&#174;5、这些类主要根据生命周期和实体身份提供IUnknown接口的虚函数。&#174;6、我们的类从一个CComCoClass派生,在CComCoClass类中,typedef了创建者的类型定义。如DECLARE_AGGREGATABLE(T)
您还没有登录,请或
访问:24844次
积分:200分
排名:第40名
随笔:20篇
评论:39条
阅读排行榜
评论排行榜
windowssky:re: x86是满递减堆栈还是空递减堆栈?
x8086汇编基础课程中的push/pop,有详细介绍...
莫问春秋:re: 构造函数调用虚函数追踪
赞同你的意见,当时这么想是因为看过一本书,那里说在构造函...
周星星:没人灌,那我灌吧
虚函数表的作用是什么?
因为对象的动态类型是什么,必须到运行时才知道,也就是只...
smartly:re: 很遗憾,minix的阅读计划被我取消了
你可以去死了。
k:re: 很遗憾,minix的阅读计划被我取消了
如果是迫于工作压力可以理解,一个人的精力毕竟有限。...
金永华:re: 短短2个多月,身边变化太大了
华为一般审核期较长,要一个月.
仔细读了你的每一篇文章,写的...
yrj:re: Minix3 Context Switch实现分析
!!!!!!!!...
tarjan:re: Minix3 Context Switch实现分析
i&download&nbs...
k:re: 终于启动minix源代码阅读计划了!
我基本上把MINIX3主要的东西看完了。我的BLOG...
天才小子:re: 终于启动minix源代码阅读计划了!
希望能提供minix3的下载地址,本人也想学习一下添加 ATL 简单对象
不是 IT 专业人员?
TechNet 库
添加 ATL 简单对象
Visual Studio 2015
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 。若要向项目添加 ATL (动态模板库) 对象,您的项目必须已创建作为 ATL 应用程序或包含 ATL 支持的 MFC 应用程序。 您可以使用创建 ATL 应用程序,或以实现对 MFC 应用程序的 ATL 支持。可以为新的 ATL 对象定义 COM 接口,当首次创建该表,或者更高版本使用添加命令从类视图快捷方式菜单。在上述解决方案资源管理器或,右键单击您想要添加的 ATL 简单对象的项目的名称。从快捷菜单中,单击添加,然后单击添加类。在对话框中,在模板窗格中,单击ATL 简单对象,然后单击打开显示。在设置为你的项目的其他选项ATL 简单对象向导页。单击完成将该对象添加到你的项目。
此页面有帮助吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
页面加载速度够快吗?
您喜欢网页的设计吗?
请告诉我们更多意见

我要回帖

更多关于 vs2013简单程序 的文章

 

随机推荐