在VS中使用MFC和ATL与使用WIN32有什么联系或区别?

有时候遇到一些初学者问我这个问题:在VS中使用MFC和ATL与使用WIN32有什么联系或区别?通俗来说,win32是通过调用windows api去实现需要的功能。而MFC和ATL则是封装好的类库,包含windows API和一些算法,提供给用户去使用。每一种类库代表了一种编程思想。打个很简单的例子,如果你喜欢自己维修东西,可以自己去商店掏锤子、螺丝刀、电工刀、钳子等等,也可以去买一个博世工具箱,里边各种工具一应俱全。自己淘货相当于使用win32调用windows api。买的工具箱相当于封装好的库(如MFC或者WTL、ATL等)。自己掏需要很好的技术和经验,虽然费时费力但可以根据你的需求去定制。而买工具箱基本上一应俱全,方便快捷,但有特殊需求时,可能找不到需要的工具。在实际开发中,如果只是做一些很小的demo去测试,如算法或者其他与界面关系不太大的东西,可以直接使用win32,否则就使用MFC或者ATL,当然除了这两个还有其他很多类库,根据实际需要而使用不同的类库就行,没有绝对的优劣之分。

时间: 2024-12-24 11:54:58

在VS中使用MFC和ATL与使用WIN32有什么联系或区别?的相关文章

在MFC和ATL工程中加入GIF动画(CPictureEx,CPitureExWnd)

一.怎样使用MFC版的CPictureEx: 1.你的对话框中加入一个静态文本控件(Static Text)或图片控件(Picture Control),Group Box也可以: 2.给控件的ID改个名字如IDC_MYPICTURE: 3.利用ClassWizard给控件添加变量.如:Category-Control,Variable type-CStatic: 4.在对话框的头文件中用CPictureEx替换CStatic(当然不要忘记在你的工程中加入PictureEx.h和PictureE

MFC和ATL共享的新类CImage为图像处理提供了许多相应的处理方法

CImage类 我们知道,Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标.位图.光标以及图元文件的内容,而不像VB中的Image控件可 以显示出绝大多数的外部图像文件(BMP.GIF.JPEG等).因此,想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控件或代码. 现在,MFC和ATL共享的新类CImage为图像处理提供了许多相应的方法,这使得Visual C++在图像方面的缺憾一去不复返了. CImage类概述 CImage是M

VC中的MFC到底是什么?

1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量.其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类. 2. MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实

非MFC工程中使用MFC库

需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console Application.MFC Application.Win32 Project等.在创建MFC工程时,通过IDE的向导会自动帮我们创建相应的类文件和包含必需的头文件,但有时候我们需要在非MFC工程中包含MFC的库.至于为什么会有这个需要,为何不在一开始就创建MFC工程呢?可能有两种原因:1.在MFC工程会产生很多向导生成的代码以及资源文件,如基于单文档的工程会有View,Doc等类,很多时候我们并

在共享DLL中使用MFC 和在静态库中使用MFC的区别

使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义. 第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件. 第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行. 同时,如果程序本来是第二种方式,发给同事,在同事机器上运行时,可能会出现错误: “无法启动程序……,由于

破解 Rith's CrackMe #1(对比IDA查看动态分析中的MFC函数名)

系统 : Windows xp 程序 : Rith's CrackMe #1 程序下载地址 :http://pan.baidu.com/s/1gecW9Qr 要求 : 注册机编写 使用工具 : IDA Pro & OD 可在“PEDIY CrackMe 2007”中查找关于此程序的破文,标题为“WAKU的第二个破文----Rith's CrackMe #1(非常简单)”. 使用IDA载入程序,在字串表中找出正确注册的提示“Well done cracker!”,并双击交叉参考来到关键代码处: 0

使用“在静态库中使用 MFC”的静态库

开发工具:visual studio 2013 pro 一共是两个项目,一个是A:项目名称MySdk,静态库,多字节,在静态库中使用 MFC,运行库使用“多线程调试 DLL (/MDd)”:另一个是B:可执行程序,多字节,在静态库中使用 MFC,预处理器定义增加_AFXDLL,运行库使用“多线程调试 DLL (/MDd)”. 项目A的接口文件中: #ifdef MYSDKINTERFACE_STATIC #define MYSDKINTERFACE_API #else #ifdef MYSDKI

vs2008中的MFC用共享DLL和静态中使用MFC,遇到的问题

最近调试一个项目,VS2008的MFC系统,里面用到了很多开源(后面调试问题时以为是开源库的问题,其实没有关系). 问题是这样的,系统在我机器上用vs2008编译好运行正常,然后移到另外一个没有装VS2008的机器上不能运行. 调试过程中的一系列方法: 1.下载VC运行库,安装后,重启,问题依然在. 2.下载VS2008的VC CRT运行时库,安装后,重启,问题依然存在. 3.安装VS2008 ,问题解决> 说明肯定缺少 VS2008中的库. 4.进一步缩小问题原因, 只安装了VS2008安装包

WIN32 DLL中使用MFC

最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修改预编译头文件(stdafx.h) 在stdafx.h文件中添加下面代码,包含一些MFC的头文件,这些可以在一个MFC工程中复制过来 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将为显式的 #include <afxwin