1.功能分类
1)系统基本服务
Windows API最基本的内容,是最常使用到的程序接口,包括:
文件系统基本操作、内存管理、进程线程和模块、设备I/O、驱动程序控制、调试和错误处理、Windows系统消息、进程间通信、定时器与消息机制等
2)系统管理
管理控制台接口、程序安装、系统恢复、任务调度、Windows运程管理
3)用户界面
Windows用户界面包括:Windows Shell和Windows图形用户界面
Windows图形用户界面:
# 窗口化:一些基本数据概念和对象:窗口类、消息队列,窗口过程(消息处理函数),窗口属性等
主要包括的API有窗口类注册的函数、窗口建立和关闭函数、窗口属性修改函数
# 界面资源:
图标、菜单、字符串、版本信息、对话框、动态光标、插入号
# 用户输入处理:用户与用户界面进行交互
包括对话框、键盘加速器(快捷键)、键盘输入、鼠标输入、原始数据输入
# 数据交换:
包括Atom表、粘贴板、数据复制、原始数据输入,它们是用户通过图形界面与应用程序进行数据交换的载体
# Windows图形界面通用控件
# Windows Shell
4)图像与多媒体
Windows的图像引擎和多媒体编程有很多的接口,包括最基本的GDI、GDI+,以及更高级的OpenGL、DirectX等图像引擎编程接口。
5)网络
用户利用Windows API可以开发基于各种网络协议的应用程序,如TCP/IP Socket、HTTP、DHP、RPC、QOS等。
同时微软还提供了网路安全编程的部分接口,包括防火墙Windows、防火墙API以及一些Windows自带的网络应用程序的接口,如IE和outlook等。
6)系统安全
包括系统的授权和认证、登录、权限管理、加密、安全管理策略等。
其他功能:
# 数据存储和访问、数据库
包括微软的”动态数据存取组件“MDAC技术(包括ADO、ODBC)、OLE数据库、XML标准等
2.Windows API核心DLL
在Windows系统目录中,存在很多的动态链接库文件DLL,这些文件包括了Windows API函数可执行程序。
DLL将各函数”导出“,这样应用程序就能找到DLL中的函数地址,当应用程序调用Windows API时,程序会运行到DLL中。
当用户调用一个API时,系统会通过程序文件中的导入表结构找到需要调用的API函数位于哪个DLL中,确定函数的地址,以便应用程序可以成功调用API函数。
API函数主要存在于几个核心的动态链接库文件中。
1)Kernel32.dll
包括了系统基本服务中的最基本的API函数,如文件系统、进程与线程、内存管理等。
2)User32.dll
Windows图形用户界面的主要支持。
3)Gdi32.dll
Windows GDI应用程序设计接口
4)标准C函数
在系统环境下,使用标准C进行程序设计时,用户所使用的库函数实际上是由操作系统提供的。
所以C程序依然依赖于操作系统开发人员为其实现接口,而C库函数的实现依然依赖于操作系统提供的系统调用。
如标准C函数fopen函数在Windows中的实现就依赖于API CreateFile函数。
Windows C标准库函数接口主要存在于crtdll.dll.
3.Unicode和多字节
Windows既可以使用Unicode字符集,又可以使用传统的字符集(如多字节编码)来实现对多种语言的支持。
Unicode是世界通用的字符集,用16位数据表示字符,一共有65535种字符,可以包括现代计算机的所有字符。
传统的字符集,如Windows ASNI字符集,使用8位或相邻的两个8位组合在一起表示特殊的语言字符。
Windows采用ASNI字符的扩展方式,如果一个字节是负数,则将其后面一个字符结合在一起表示一个字符。这种方式编码的字符集叫做多字节字符集。
三种字符串变量及其初始化:
Unicode LPWSTR L“String”
多字节 LPSTR “String”
根据开发环境的自调整 LPTSTR TEXT“String”
W版本和A版本的API:
Windows支持Unicode和ASCII编码的字符。
Windows系统凡是以字符串为参数的很多API都具有W和A两个版本以实现不同编码的字符处理。
如MessageBox实际上就有MessageBoxW和MessageBoxA的两个版本:
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA //默认使用MessageBoxA
#endif
Unicode和ASCII的转换:
WideCharToMultiByte、MultiByteToWideChar、UnicodeToBytes
4.Windows程序设计规范建议
变量名:采用匈牙利命名法,变量名由”类型小写“加”变量描述(首字母大写)“构成
函数名:各单词首字母大写
类型名:全大写,以_分隔单词
常量:同类型名
宏:同类型名
1)系统基本服务
Windows API最基本的内容,是最常使用到的程序接口,包括:
文件系统基本操作、内存管理、进程线程和模块、设备I/O、驱动程序控制、调试和错误处理、Windows系统消息、进程间通信、定时器与消息机制等
2)系统管理
管理控制台接口、程序安装、系统恢复、任务调度、Windows运程管理
3)用户界面
Windows用户界面包括:Windows Shell和Windows图形用户界面
Windows图形用户界面:
# 窗口化:一些基本数据概念和对象:窗口类、消息队列,窗口过程(消息处理函数),窗口属性等
主要包括的API有窗口类注册的函数、窗口建立和关闭函数、窗口属性修改函数
# 界面资源:
图标、菜单、字符串、版本信息、对话框、动态光标、插入号
# 用户输入处理:用户与用户界面进行交互
包括对话框、键盘加速器(快捷键)、键盘输入、鼠标输入、原始数据输入
# 数据交换:
包括Atom表、粘贴板、数据复制、原始数据输入,它们是用户通过图形界面与应用程序进行数据交换的载体
# Windows图形界面通用控件
# Windows Shell
4)图像与多媒体
Windows的图像引擎和多媒体编程有很多的接口,包括最基本的GDI、GDI+,以及更高级的OpenGL、DirectX等图像引擎编程接口。
5)网络
用户利用Windows API可以开发基于各种网络协议的应用程序,如TCP/IP Socket、HTTP、DHP、RPC、QOS等。
同时微软还提供了网路安全编程的部分接口,包括防火墙Windows、防火墙API以及一些Windows自带的网络应用程序的接口,如IE和outlook等。
6)系统安全
包括系统的授权和认证、登录、权限管理、加密、安全管理策略等。
其他功能:
# 数据存储和访问、数据库
包括微软的”动态数据存取组件“MDAC技术(包括ADO、ODBC)、OLE数据库、XML标准等
2.Windows API核心DLL
在Windows系统目录中,存在很多的动态链接库文件DLL,这些文件包括了Windows API函数可执行程序。
DLL将各函数”导出“,这样应用程序就能找到DLL中的函数地址,当应用程序调用Windows API时,程序会运行到DLL中。
当用户调用一个API时,系统会通过程序文件中的导入表结构找到需要调用的API函数位于哪个DLL中,确定函数的地址,以便应用程序可以成功调用API函数。
API函数主要存在于几个核心的动态链接库文件中。
1)Kernel32.dll
包括了系统基本服务中的最基本的API函数,如文件系统、进程与线程、内存管理等。
2)User32.dll
Windows图形用户界面的主要支持。
3)Gdi32.dll
Windows GDI应用程序设计接口
4)标准C函数
在系统环境下,使用标准C进行程序设计时,用户所使用的库函数实际上是由操作系统提供的。
所以C程序依然依赖于操作系统开发人员为其实现接口,而C库函数的实现依然依赖于操作系统提供的系统调用。
如标准C函数fopen函数在Windows中的实现就依赖于API CreateFile函数。
Windows C标准库函数接口主要存在于crtdll.dll.
3.Unicode和多字节
Windows既可以使用Unicode字符集,又可以使用传统的字符集(如多字节编码)来实现对多种语言的支持。
Unicode是世界通用的字符集,用16位数据表示字符,一共有65535种字符,可以包括现代计算机的所有字符。
传统的字符集,如Windows ASNI字符集,使用8位或相邻的两个8位组合在一起表示特殊的语言字符。
Windows采用ASNI字符的扩展方式,如果一个字节是负数,则将其后面一个字符结合在一起表示一个字符。这种方式编码的字符集叫做多字节字符集。
三种字符串变量及其初始化:
Unicode LPWSTR L“String”
多字节 LPSTR “String”
根据开发环境的自调整 LPTSTR TEXT“String”
W版本和A版本的API:
Windows支持Unicode和ASCII编码的字符。
Windows系统凡是以字符串为参数的很多API都具有W和A两个版本以实现不同编码的字符处理。
如MessageBox实际上就有MessageBoxW和MessageBoxA的两个版本:
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA //默认使用MessageBoxA
#endif
Unicode和ASCII的转换:
WideCharToMultiByte、MultiByteToWideChar、UnicodeToBytes
4.Windows程序设计规范建议
变量名:采用匈牙利命名法,变量名由”类型小写“加”变量描述(首字母大写)“构成
函数名:各单词首字母大写
类型名:全大写,以_分隔单词
常量:同类型名
宏:同类型名