Windows API概要

本文概述了Windows API的功能,包括系统基本服务、系统管理、用户界面、图像与多媒体、网络和系统安全。重点介绍了核心DLL如Kernel32.dll、User32.dll和Gdi32.dll,以及Unicode和多字节字符集的处理。同时,讨论了Windows程序设计的规范建议,如匈牙利命名法和函数命名约定。
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程序设计规范建议

变量名:采用匈牙利命名法,变量名由”类型小写“加”变量描述(首字母大写)“构成
函数名:各单词首字母大写
类型名:全大写,以_分隔单词
常量:同类型名
宏:同类型名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值