其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·前两天看到的#pragma用法
·用C写的简单学生成绩管理系统
·射频芯片nRF401天线设计的分析
·入门系列--OpenGL最简单的入门
·简单的CreateRemoteThread例程-初学者必看
·BCB数据库图像保存技术
·GNU中的Makefile
·使用AutoMake轻松生成Makefile
·数据结构

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
在Atl工程中使用mfc类库

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

      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 <windows.h>
出现这样的错误是因为头文件定义中有如下语句:
#ifdef _WINDOWS_
 #error WINDOWS.H already included.  MFC apps must not #include <windows.h>
#endif
问题就出在atlbase和afx这两个头文件上,afx头文件会引用afxv_w32.h这个文件。它会检查当前头文件中是否已经引用了windows.h,如果引用了就直接报错。通常出现这种情况,我们只需要略过重复的引用和定义即可,为什么在这里强制定义这种情况为异常,其用意实在无法猜测。不过还在我们可以绕过这种情况,其方法就是将对afx.h的引用放在对atlbase文件的引用之前。上述的错误断言就不会出现了,不过到此还没有完全解决,我们还需要在工程设置的General项中将“Not using MFC”改为另外两种之一。这样我们就能直接在Atl的工程中使用MFC中定义的类了。
    目前编译和运行都基本可以了,不过还是不清楚为什么有如此严格的错误申明在这里,可能还是另有玄机的,如果有哪位在使用中出现了问题,请告诉我,多谢!!!




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有