VC++、Win32 SDK、MFC的区别


  这是一个初进行开发人员都可能遇到过的概念不清的问题,自己当年也同样有过误解,做技术我感觉一定要专,但是,不代表毫不关心相关的知识,至少概念层次上要知道,所以,这里还是再把这些内容纪录下来,好记性不如烂笔头:

   C/C++都是一种编程语言,程序员用它来创作(我喜欢用创作这个词,让写代码有一些艺术气息...)各种各样的程序,简单如计算闰年,复杂到一个系统地实现。当然,编写标准C程序的时候,我们还经常会调用各种库函数来辅助完成某些功能;初学者使用得最多的C库函数就是printf了,这些库函数是由你所使用的编译器厂商提供的。在Windows平台下,也有类似的函数可供调用;不同的是,这些函数是由Windows操作系统本身提供的。

   Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序。这些函数是Windows操作系统提供给应用程序编程的接口(ApplicationProgrammingInterface),简称为API函数。我们在编写Windows程序时所说的API函数,就是指系统提供的函数,所有主要的Windows函数都在Windows.h头文件中进行了声明。使用windowsAPI创建的能在windows上运行的程序统称为windows程序

    这些API随着系统的更新升级,他们也是在不断更新和扩充,但是,其行为基本保持不变以保证不同平台对应用程序的兼容性,面对越来越多地API,我们怎么获取可靠的帮助呢?最大的帮助就是MSDN,你可以把MSDN理解为微软向开发人员提供的一套帮助系统,其中包含大量的开发文档、技术文章和示例代码。MSDN包含的信息非常全面,程序员不但可以利用MSDN来辅助开发,还可以利用MSDN来进行学习,从而提高自己。对于初学者来说,学会使用MSDN并从中汲取知识,是必须要掌握的技能。

    我们还经常听人说Win32SDK开发,那么什么是SDK呢。SDK的全称是Software DevelopmentKit,中文译为软件开发包。假如现在我们要开发呼叫中心,在购买语音卡的同时,厂商就会提供语音卡的SDK开发包,以方便我们对语音卡的编程操作。这个开发包通常都会包含语音卡的API函数库、帮助文档、使用手册、辅助工具等资源。也就是说,SDK实际上就是开发所需资源的一个集合,再具体点说,你知道CreatePorcess这个API,那怎么使用,你需要有头文件,当然还需要提供功能的系统DLL库的引出库lib,这些都在SDK中。现在读者应该明白Win32SDK的含义了吧,即Windows32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具

   提示:API和SDK是一种广泛使用的专业术语,并没有专指某一种特定的API和SDK,例如,语音卡API、语音卡SDK、JavaAPI、JavaSDK等。自己公开的DLL函数也可以叫API!!!   

   一般来讲,狭义上的API指MS公开的函数。比如MSDN中介绍的函数。   广义的API可以包括所有的函数,你自己的函数也算,未公开的也是。   指世界上一切函数。都可以叫API--pplication Programming Interface;   SDK也不仅仅指MS的开发包,你自己的程序如果需要让别人作2次开发,你就会提供一些函数接口让别人编程,你提供的材料也叫SDK.  

     有了语言(C/C++),有了开发资源(SDK)、有了帮助文档(MSDN),ok,我们可以编写windows程序了,等等、工具有没有更好的工具呢,人类之所以进步就在于会使用工具,所以,为了更加高效的开发程序,一些集成开发环境诞生了,其中, Visual  C++就是一个支持C/C++语言开发的集成开发环境(IDE)。记住,Vc++不是什么新的编程语言,他只是IDE,只是一个编程的辅助工具,具体来说,Visual  C++包含了源程序编辑器、C/C++编译器、MFC和ATL等,其中,MFC和ATL可以简单的理解为再次封装的Windows的系统接口,原生接口就是API 

   其中,MFC,微软基础类(Microsoft FoundationClasses),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,也可以说,MFC是WinAPI与C++的结合后的再一次封装。

   OWL(borland公司,其已经逐渐淡处)、VCL(Borland公司--现在已和Inprise合并专--为DELPHI设计的,其是由OWL演变的)和MFC(ms专为vc++设计的)是不同公司提供的三大类库,更确切点说,他们都是应用框架。

   DELPHI:也是一种集成开发环境,不过他支持的语言是源至于pascal的ObjectPascal.他使用的框架就是VCL.

      BCB:就是Inprise公司使用了Delphi的IDE和VCL,再配上C++语言推出的开发环境C++Builder,很多人很念旧,所以冠以BorlandC++ Builder之名,简称为BCB。

   ATL是全新的COM 开发工具 :---- ATL 是ActiveX Template Library的缩写,它是一套C++模板库。 使用ATL 能 够 快速地开发出高效、简洁的代码, 同时对COM 组件的开发提供最大限度的代码自动生成以及可视化支 持。从Microsoft Visual C++ 5.0 版本开始,Microsoft 把ATL 集成到Visual C++ 开发环境中。

     SDK+ C 完全可以进行所有的windows程序开发,当然,你还可以采用MFC + C++,当然,你要用SDK + C++也是你的自由,但是MFC + C可是impossible的事情,因为,MFC就是C++写的,C可不支持类哦...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC调用win32窗口显示调试信息,使用AllocConsole 函数(2010-11-16 15:33:25)转载标签: 调试win32mfc杂谈 分类: 编译器 AllocConsole Function 为主调进程分配一个新的控制台。 语法 C++ : BOOL WINAPI AllocConsole(void); 参数: 无 返回值:如果函数成功,返回值是非零值;如果函数失败,返回值是零值。 备注: 一个进程仅能关联一个控制台,所以该函数在主调进程已经具有控制台时将会失败。 一个进程可以使用 FreeConsole 函数来释放与之关联的控制台,之后它就可以调用该函数来创建一个新的控制台或使用 AttachConsole 函数来关联另一个控制台。 如果主调进程创建了一个子进程,则子进程也将继承这个新创建的控制台。 该函数为新的控制台初始化标准输入、输出、错误句柄等。 标准输入句柄是一个控制台输入缓冲的句柄,标准输出和标准错误句柄则是控制台屏幕缓冲的句柄。为了获得这些句柄,可以使用 GetStdHandle 函数。 该函数主要用于GUI应用程序来创建一个控制台窗口。 GUI应用程序初始化时时没有控制台的,而控制台应用程序则以控制台来初始化的。 要求 : Minimum supported client Windows 2000 Professional Minimum supported server Windows 2000 Server Header: Wincon.h (include Windows.h) Library: Kernel32.lib DLL Kernel32.dll ---------------------------------------------------------------------------------------- 虽然WIN32时代是图形界面时代,但偶尔程序中还需要用到命令行模式,比如批处理,这时再搞个图形界面出来显得似乎就不那么专业了。但客户还需要在正常状态下(对于命令行模式,我认为用户是非正常状态,比如脑子进水。)使用图形界面,这决定我们不能开一个控制台工程,而需要使用MFC exe程序。 OK,理所当然的,通过条件控制,命令行下我关掉对话框界面的调用代码,再使用 cout << "Hello world!" << endl; 来向这个友好的世界打个招呼,并坚持认为这句问候应该显示在CMD那个漆黑的窗口里。 很沮丧地说,事实给我与痛击。cmd窗口里仍然漆黑一片,系统完全不理会我的友好。 邓爷爷说,改革开放好!也许,我也需要个改革。 在同事mr. zhang的指导下,我找到一组API:Console Functions!正是这组API,最终让我的友好得以正当地表达。 一。创建一个Console,AllocConsole 直接使用 AllocConsole(); 马上,若是进程内第一次调用这个函数,一个空的cmd窗口会蹦出来。需要注意,一个进程只能创建一个console,多次调用会返回FALSE;而且,这个窗口是个独立的控制台窗口。 MSDN的解释:A process can be associated with only one console, so the AllocConsole function fails if the calling process already has a console. 还有段:If the calling process creates a child process, the child inherits the new console. 二。显示Hello World,WriteConsole 有了console,我们还需要获取它的句柄HANDLE,然后才能在上面显示。方法是 GetStdHandle,它会获取前面我们AllocConsole得到的cmd窗口的句柄;若未调用AllocConsole,将获取标准的输入输出窗口句柄。 MSDN的解释:The GetStdHandle function returns a handle for the standard input, standard output, or standard error device. HANDLE hdlWrite = GetStd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值