win32项目,win32控制台,API,SDK,MFC

前段时间学习简单项目开发的时候发现需要设计windows对话框应用程序,于是去学了SDK,但是后来跟着书敲代码的时候又是用了MFC框架,于是来总结下这些概念

win32项目与win32控制台

1.界面

win32控制台项目是在32位Windows命令提示符(即所谓的dos)环境下运行的应用程序,所谓dos界面全称为Disk Operating System,意思是“磁盘操作系统”,就是那个黑乎乎的界面。

而win32项目则是运行于32位Windows操作系统中的应用程序,它是有界面的程序,界面里控件由自己实现

2.入口

win32控制台的程序入口是main,而win32项目的程序入口是winmain

入口函数是可以更改的,在项目属性->链接器->高级中修改

3.链接库与设置

win32控制台只链接运行时库和一些核心的win32库,链接器subsystem参数为console类型,所以编译出来的程序会有黑色的控制台窗口作为呈现标准输入(stdin)和标准输出(stdout)。

Win32项目:引用了win32Api头文件和库,链接器subsystem参数为windows,所以生成的程序不带黑色的控制台,直接使用标准输入和标准输出时,看不到效果。(举个栗子,在win32项目中printf是无效的)

在vs中设置链接器:

API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机机制的细节。


SDK和MFC

它们是windows程序设计的两种实现方式

SDK是c语言方式,而MFC是使用C++对SDK进行包装

SDK是Windows32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具。简而言之就是C语言调用windows的api函数的编程,例如直接调用MessageBox()函数创建对话框.

而MFC使用C++对SDK进行了封装,但是本质上还是调用API函数。

例如:如果使用SDK进行windows设计时,有一条明显的脉络:在进入winmain后,设计窗口类->创建窗口类->显示窗口->创建窗口->显示窗口->更新窗口->进入消息循环->将消息传入窗口过程函数中处理,而MFC则将这些程序都封装了起来。MFC就是这样一个类库。

MFC提高了开发的效率,但是失去了很多灵活性,它的界面也没有太大可以改变的空间,因此如果需要更灵活的界面设计,可以自己使用SDK实现。