C/C++编程笔记:Windows编程入门知识

引言:
学习C语言很久了 , 是不是一直在跟黑乎乎的屏幕打交道 , 像QQ、360、VC6.0这样的软件都是带界面的 , 怎么做到的呢?
前面我们讲的”黑屏“叫控制台应用程序(Win32 Console Application) , 也称DOS程序(或MS-DOS程序) 。 DOS是早期的命令式操作系统 , 很难做出漂亮的界面 , 除了开发人员 , ”黑屏“对普通用户很不友好 。
C/C++编程笔记:Windows编程入门知识文章插图
【C/C++编程笔记:Windows编程入门知识】带界面的程序叫Windows应用程序(Win32 Application) 。 Windows是一款现代操作系统 , 带有丰富的交互界面 , 使用简单 , 无需记忆繁杂的命令 。
使用C语言可以开发出Windows应用程序 , 也就是带界面的程序 , 只是绝大部分C语言教程没有讲 , 它们只讲了基本语法 , 让很多初学者认为学C语言没用 , 什么都做不出来 。
其实不是这样的 , C语言只是一种工具 , 需要与Windows系统结合 , 借助Windows提供的函数才能开发出漂亮的程序 。
Windows API 编程、Windows编程、Windows SDK 编程是一个概念 。
C/C++编程笔记:Windows编程入门知识文章插图
什么是windos编程?在C语言中 , 使用fopen()函数可以打开一个文件 , 感觉非常简单 。 文件保存在硬盘上 , 要经过复杂的处理才能显示 , 这些细节对我们来说是透明的 , 由操作系统完成 。 也就是说 , 我们调用fopen()函数来通知操作系统 , 让操作系统打开一个文件 。
那么 , 我们如何告诉操作系统打开文件呢?
看似简单的操作到底层都非常复杂 , 打开文件首先要扫描硬盘 , 找到文件的位置 , 然后从文件中读取一部分数据 , 将数据放进I/O缓冲区 , 放进内存;这些数据都是0、1序列 , 还要对照ASCII表或Unicode表”翻译“成字符 , 再在显示器上显示出来 。 这个过程如果要让程序员来完成 , 那简直是噩梦!
怎么办呢?Windows想了一个很好的办法 , 它预先把这些复杂的操作写在一个函数里面 , 编译成动态链接库(DLL) , 随Windows一起发布 , 程序员只需要简单地调用这些函数就可以完成复杂的工作 , 让编程变得简单有趣 。
C/C++编程笔记:Windows编程入门知识文章插图
这些封装好的函数 , 叫做 API(Application Programming Interface) , 即应用程序编程接口 。
API 函数以C语言的形式向外暴露 , 可以通过C语言直接调用 。
除了函数 , Windows 还预先定义了很多数据类型(使用C语言的 typedef 关键字定义) 。 广义上来说 , 这些数据类型也是 API 的一部分 。
API 屏蔽了很多细节 , 大大简化了程序员的工作 , 这就是操作系统的威力 , 不但让普通用户使用方便 , 也让程序员如释重负 。
在Windows上运行的程序(包括MS-DOS程序) , 本质上都是通过调用Windows API来完成功能的 , 包括QQ、360、VC6.0等 , 别看这些团队牛 , 也不可能从底层做起 , 那简直不可想象 。
C语言也一样 , 也是调用Windows API , fopen() 函数就是通过调用 CreateFile() 函数实现的 。 CreateFile() 是Windows API中的一个函数 , 可以用来打开或创建文件 。
通常所说的 SDK 编程就是直接调用API 函数进行编程 。 SDK 是 Software Development Kit 的缩写 , 即软件开发工具包 。
Windows API 函数成千上万 , 详细了解每一个函数的用法是不可能的 , 也是完全没有必要的 。 只需知道哪些功能由哪些API 函数提供就行了 , 等使用它们时再去查阅帮助文件 。
C/C++编程笔记:Windows编程入门知识文章插图


推荐阅读