API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别
【原】API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别
首先来看一下每一个术语的定义:
API:Application Programming Interface。Windows操作系统提供给应用程序编程的接口, 简称 为API函数。
Win32 SDK:SDK(Software Development Kit)中文是软件开发包。则Win32 SDK是Windows 32位平台下的软件开发包,包括了API函数、帮助文档、微软 提供的一些辅助开发工具。
Win32项目:Microsoft Windows操作系统32位环境下由C/C++语言调用API函数编写 的项目。
MFC:Microsoft Foundation Classes。微软基础类。用于在C++环境下编写应用程序的一个 框架和引擎。
Windows窗体应用程序:用户计算机上运行的客户端应用程序,可显示信息、请 求用户输入以及通过网络与远程计算机进行通信。在开发大型应用程序时,可能需要研 究 .NET Framework 和它所提供的类
接下来解释一下具体的区别:
1、Win32项目和MFC的区别:
win32程序是利用编程语言直接调用windows api编写的程序,可以在任何装有正确windows的机器上运行,程序员发挥的空间也最大,能实现在该操作系统中可以编程实现的任何功能。
MFC是对大部分API的封装,调用一个MFC函数或new一个MFC的类相当于调用了很多API函数了,这样就节省了大量的时间了。由于封装,不可能完全实现win32所有功能。使用方便,但是隐藏了细节。MFC是面向对象的思想,主要是用来做界面。
两者相比,win32更本质,MFC更抽像。从软件工程来看,MFC更符合要求,更人性化。我们在正常使用中,优先使用MFC
2、Win32项目和Windows窗体应用程序的区别:
win32应用程序是指可以在32位或以上Windows系统中运行的程序,概念比windows窗体大,严格说来,窗体程序也是win32应用程序。
Windows窗体应用程序必须在.net环境中应用,就是说你编译好的软件在没有.net framework的机器上是不能运行的,而且功能的实现也要受framework的限制,不能随心所欲。
3、MFC和Windows窗体应用程序的区别:
MFC和Windows窗体应用程序的结果完全一样,都是用面向对象的思想做界面。但是由于MFC可以开发出Windows窗体应用程序,所以Windows窗体应用程序使用更方便,但是灵活性不如MFC
4、不要使用MFC的场合:
- 三维游戏等。MFC没有包含相关的库
- 特殊程序。如病毒等后台工具。需要的是效率而不是界面,而且要求体积小。
API、Win32 SDK、Win32项目、MFC、Windows窗体应用程序的区别的更多相关文章
- Windows窗体应用程序(非Console)使用libuv实现简单的异步WEB服务器
libuv是一个很强大的异步处理框架(严格意义上不能叫框架,其实就是一组异步函数库,当然框架这东西有各种各样的定义和理解_^...),最初的的目的是用于NODEJS的异步处理,不过因为它是一个独立的项 ...
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- 第一章 C#入门(Windows窗体应用程序)(二)
C#窗体应用程序(二) [案例]设计登录界面,效果如下: [案例实现步骤] 1.新建项目(Windows控制台应用程序 文件→新建→项目:选择“项目类型”为Visual C#,“模板”为Windows ...
- 第一章 C#入门 (Windows窗体应用程序)(一)
我的第一个窗体应用程序(一) [案例说明] 在文本框中显示一行文字“Hello C#!”,单击[显示]按钮后在文本框中显示文字:单击[清除]按钮后清除文本框中的内容. [案例实现步骤] 1.新建项目 ...
- 第一章 C#入门 (Windows窗体应用程序)(三)
[案例] 编写一个Windows窗体应用程序,窗体上有一个文本框和两个按钮([显示]和[清除]按钮). 单击[显示]时,文本框的背景变为蓝色并且居中显示“努力学习C#”: 单击[清除]按钮,文本框的背 ...
- Windows窗体应用程序常用的几个类的属性、方法以及事件
System.Diagnostics.Process 属性 public bool EnableRaisingEvents { get; set; }//获取或设置在进程终止时是否应激发 Exited ...
- C#windows窗体应用程序如何自适应大小
用C#的windows窗体应用程序做界面十分轻松,但是系统默认是没有让控件跟随窗体的大小改变而已改变的.所以需要我们手动去设置让窗体控件随着窗体的大小改变而改变.所以我们只需要将控件选择 然后把Anc ...
- 使用WIN32汇编语言实现一个基本windows窗体的过程分析
一个常规的windows窗体一般都是一些一样的构造.你假设想要更改一些个性化的设置,你能够在这个一般的模板伤添砖加瓦.构造自己比較喜欢的类型.下边就分析一下一般的windows窗体的一般模板. 一. ...
- C#Windows窗体应用程序MyKTV项目
后台管理其中有一个添加歌手信息和歌曲信息的窗体要点击按钮并上传文件,因为对那些文件流什么的不懂,所以用了老师教的最简单的判断方法,但此方法只是按后缀名判断文件的样式,如果后缀名乱改就不行了! 此时需要 ...
随机推荐
- APP自动化 -- 框架
一.框架源码 https://github.com/jiangnan27/Autotest_APP_Open 二.框架环境 python3 + appium1.15.3 + pytest5.3.5 三 ...
- [leetcode/lintcode 题解] 微软面试题:股票价格跨度
编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度. 今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天). 例如 ...
- pandas之Seris和DataFrame
pandas是一个强大的python工具包,提供了大量处理数据的函数和方法,用于处理数据和分析数据. 使用pandas之前需要先安装pandas包,并通过import pandas as pd导入. ...
- Bug--slfj4依赖冲突
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/F:/Spring%20p ...
- Blash数组 c++
//输入一个数作为Blash数组的根, //对于该数组的每一个数x,x*2+1 x*3+1均在该数组 //并且该数组没有其他数字 //该数组升序排列 //输入a,n 输出该数组第n个数 // // # ...
- MacOS工具
原文是"池建强"的微信文章,公众号为"MacTalk" 1. Alfred 2. iTerm2 一些基本功能如下: 分窗口操作:shift+command+d( ...
- matplotlib基础汇总_03
四图 直方图 [直方图的参数只有一个x!!!不像条形图需要传入x,y] hist()的参数 bins 可以是一个bin数量的整数值,也可以是表示bin的一个序列.默认值为10 normed 如果值为T ...
- 破解东航的seriesid
在查询东航航班的时候,请求数据中有个seriesid 调试js分析代码的过程就略过了,下面是整合的生成seriesid 的js代码 <script> function get_n(e, t ...
- loj #6247. 九个太阳 k次单位根 神仙构造 FFT求和原理
LINK:九个太阳 不可做系列. 构造比较神仙. 考虑FFT的求和原理有 \(\frac{1}{k}\sum_{j=0}^{k-1}(w_k^j)^n=[k|n]\) 带入这道题的式子. 有\(\su ...
- 剑指 Offer 57. 和为s的两个数字
本题 题目链接 题目描述 我的题解 双指针 思路分析 因为该数组是递增数组,所以我们可以用双指针法. 声明指针left 和 right分别指向数组的头(数组下标为0)和尾(数组下标为length-1) ...