Using MFC in ATL COM project

VC的Atl工程为我们提供了很好的创建COM工程的方法,可是想要在Atl工程里面使用MFC里的对象(如CString,CFile)却并不容易,这对于那些原本熟悉MFC类库的程序员来说实在是一个很大的麻烦.
这里就介绍一下如何在Atl中使用mfc类库:

      Atl的工程包括三种类型,ActiveDll, ActiveExe以及Service。
对于ActiveDll工程,只需要在建立工程的时候选择MFC support,就可以了。
对于ActiveExe和Service工程,就没有那么简单了。

我每次在工程中加入MFC的头文件(如afx.h),都会出现如下的错误:

fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include

出现这样的错误是因为头文件定义中有如下语句:

#ifdef _WINDOWS_

 #error WINDOWS.H already included.  MFC apps must not #include

#endif

问题就出在atlbase和afx这两个头文件上,afx头文件会引用afxv_w32.h这个文件。它会检查当前头文件中是否已经引用了windows.h,如果引用了就直接报错。通常出现这种情况,我们只需要略过重复的引用和定义即可,为什么在这里强制定义这种情况为异常,其用意实在无法猜测。
不过好在我们可以绕过这种情况,其方法就是将对afx.h的引用放在对atlbase文件的引用之前。上述的错误断言就不会出现了,不过到此还没有完全解决,我们还需要在工程设置的General项中将“Not using MFC”改为另外两种之一。这样我们就能直接在Atl的工程中使用MFC中定义的类了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/557324/viewspace-1261526/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/557324/viewspace-1261526/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值