如何使用windowsAPI
NT结构
它是指一系列微软设计及制造, 由Windows NT所派生出的视窗操作系统架构.
NT架构的运行流程为:
软件载入用户态
从用户态载入核心态
对硬件进行操作
用户态我们也称之为 RING3, 它是我们平时所用的.
核心态我们也称之为 RING0, 它是操作系统平时用的.
Windows API
Windows提供了一套程序开发接口, 全名叫做 Application Programming Interface, 即应用程序编程接口.
它有 R0 API 和 R3 API
WindowsAPI是向下兼容的
为了实现向下兼容, 在有新的函数的时候, 通常会加一个Ex
比如, MessageBox, 有新函数叫 MessageBoxEx
SDK
软件开发工具包(Software Development Kit, SDK)一般是一些被软件工程师用于为
特定的软件包、软件框架、硬件平台、作业系统等创建应用软件的开发工具的集合
.SDK全称为 Software Development Kit.
MFC
MFC是一套框架
它是微软提供的, 用于在C++环境下编写用于程序的一个框架和引擎
它可以说是 WinAPI 和 C++ 结合后的再一次封装
它属于应用程序框架
Windows API的分类
基础服务(Base Services)
提供对Windows系统可用的基础资源的访问接口.
文件系统(file system)
外部设备(device)
进程(process)
线程(thread)
访问注册表(Windows registry)
错误处理机制(error handling)
图形设备接口(GDI)
提供输出图形内容到显示器, 打印机以及其他外部输出设备.
图形化用户界面(GUI)
提供创建和管理屏幕和大多数基本控件(control)
比如按钮和滚动条
接收鼠标和键盘输入
其他与GUI有关的功能
通用对话框链接库(Common Dialog Box Library)
为应用程序提供标准对话框
比如打开/保存文件对话框
颜色对画框
字体对话框等等.
通用控件链接库(Common Control Library)
为应用程序提供接口来访问操作系统提供的一些高级控件.
比如状态栏(status bar)
进度条(progress bars)
工具栏(toolbar)
标签(tab)
Windows外壳(Windows Shell)
作为Windows API的组成部分, 不仅允许应用程序访问Windows外壳提供的功能, 还对之有所改进和增强.
网络服务(Network Services)
为访问操作系统提供的多种网络功能提供接口
它包括NetBIOS
Winsock
NetDDE
RPC
...
Web相关API
Internet Explorer网页浏览器也提供许多程序接口
一组图像过滤组件
利用COM对象为应用程序提供解析URL服务
应用程序也可以为其他程序提供自己的URL处理程序
位于shdocvw.dll和mshtml.dll之中
可嵌入的网页浏览器控件(以及 Trident / MSHTML 引擎)
urlmon.dll中的命名服务(URL moniters service)
WinInet IE的网络层,支持HTTP和HTTPS等协议
一个支持多种语言文本的链接库(mlang.dll)
DirectX Transforms
XML支持(MSXML组件)
Windows的邮件功能相关的API
在Windows 7取消邮件功能之后也随之从Windows API中去除
由于Windows Mail在Windows Vista上取代了Outlook Express, 对应的API也随之变化.
地址本和邮件API
多媒体相关API
自从Windows 95 OSR2以来, Microsoft把DirectX API作为Windows安装的一部分.
DirectX提供一组松散相关的多媒体和游戏服务
自DirectX 9以来, 相比Direct3D更倾向于后者
因为Direct3D提供更多面的高性能图形功能(毕竟2D渲染只是3D渲染的(不严格)子集).
已被Direct2D替代。
Direct3D可以作为OpenGL的替代, 来访问3D加速硬件.
DirectDraw提供硬件加速2D framebuffer(帧缓冲)访问接口.
DirectSound提供底层次的硬件加速声卡访问.
被XAudio替代
DirectInput用来与输入设备(摇杆和gamepad)进行通信
已被DirectX 9中引入的XInput所替代
DirectPlay提供一个多人游戏的架构(multiplayer gaming infrastructure).
它已经被DirectX 9所替代
Microsoft不建议用它开发游戏。
DirectShow可以创建和运行通用的多媒体管道(generic multimedia pipelines)
它可以与GStreamer框架相媲美
经常被用来渲染游戏视频和创建媒体播放器(Windows Media Player
诸如FFDShow之类的编解码器正是基于此;
在Windows Vista及更高版本中, DirectShow被Media Foundation替代).
不建议用DirectShow开发游戏
DirectMusic提供类似MIDI的功能
与DirectSound一起被XAudio替代
程序通信API
Windows API的功能主要通过使操作系统和应用程序之间的交互来实现.
为了实现不同Windows应用程序的通信, 微软随着主要Windows API, 推出一系列的技术.
最初的DDE(Dynamic Data Exchange)升级为对象连接与嵌入(Object Linking and Embedding)
再后来是组件对象模型(COM)
封装库
微软利用许多更底层的Windows API函数, 开发出许多封装库(wrapper), 让应用程序以更抽象的方式与Windows API进行交互.
MFC(Microsoft Foundation Class Library)用C++ 类别来封装Windows API的功能,因而允许用更为面向对象的方式与API进行交互
ATL(Active Template Library)是对COM的面向模板(template oriented)的封装
WTL(Windows Template Library)作为ATL的增强,被用来作为MFC的轻型的替代物
其他**的封装库是Borland公司的产品, 为了与MFC竞争而推出的OWL(Object Windows Library)提供了类似的面向对象封装
不久Borland又推出VCL(Visual Component Library)来取而代之
大多数的Windows 程序框架(application framework)是对Windows API的封装
.NET Framework、Java以及其他在Windows下的程序语言, 都是(或者包含)封装库.
Windows API入门
我们使用Visual Studio系列软件在进行Windows程序开发的时候, VS会默认的给我们进行一些附加库的添加.
所以, 我们只需要添加 #include
就可以在我们的项目中使用Windows的API了.
Windows.h
它包含了Windows里大量我们常用的API函数
Windows.h 是一个特别重要的头文件, 它包含了其他Windows头文件, 这些头文件的某些也包含了其他头文件.
WinDef.h
WinNT.h
WinBase.h
WinUser.h
WinGDI.h
WinDef.h
Windows基础类型定义头文件
WinNT.h
Unicode支持头文件
WinBase.h
Kernel函数头文件
WinUser.h
用户态(Ring3)接口头文件
WinGDI.h
图形设备接口头文件
……
公开笔记对他人可见,有机会被管理员评为“优质笔记”
{{ noteEditor.content.length }}/2000
讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。
课程大纲
- 第一章 windows简介
- 1-1试看 windows版本变迁30:10
- 1-2试看 NT结构30:32
- 第二章 编程语言和Windows
- 2-1API&SDK&MFC10:41
- 2-2WindowsAPI分类30:43
- 2-3如何使用windowsAPI12:44
- 第三章 数据类型&字符编码
- 3-1Windows基础数据类型01:28:33
- 3-2字符集49:36
- 第四章 库存管理系统
- 4-1项目简介12:18
- 4-2项目界面演示09:15
- 4-3IO操作48:06