Win32 API(Application Programming Interface)
Win32 API可认为是一个程序库,提供各式各样的与windows系统服务有关的函数。
Win32 API是最底层的服务,可调用Windows的各种服务。
通常所说的SDK编程就是直接调用API函数进行编程。
Win32 API是指编制32位应用程序时用的一组函数、结构、宏定义。在Win32的环境下,任何语言都是建立在Win32 API基础上的。C#等软件API隐藏的较深。
大多数API位于三个核心的DLL中
kernel32.dll、user32.dll、GDI32.dll
采用其开发windows应用程序过于繁琐。
API&MFC
1、kernel
在Win32中库名为KERNEL32.DLL,主要用于产生与操作系统之间的关联。
程序加载
上下文选择
文件输入输出
内存管理
例如:GlobalMemoryStatus函数就是包括当前物理内存及虚拟内存的使用信息。
2、user
这个类库在Win32中名叫USER32.DLL
它允许管理全部的用户接口。例如
窗口
菜单
对话框
图标等。
例如,DrawIcon函数将在指定的设备关联上“画”出图标或者鼠标。
3、GDI(Graphical Device Interface)
它在Win32中的库名为GDI32.dll,它是图形输出库,使用GDI Windows "画"出窗口、菜单以及对话框等;
它能创建图形输出
它也能保存图形文件。
例如,CreateBitmap 函数就能通过指定的长、宽、颜色创建一个位图。
4、API&MFC
API:一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数。
MFC:是对Windows API的封装,是Win API与C++的结合,MFC就是挂在它之上的一个辅助软件开发包。
MFC的主包含文件为"Afxwin.h"
API的主包含文件为"windows.h"
API 函数的调用方法
1、C++调用过程
(1)包含要调用函数的声明文件
windows.h包含其他头文件
windef.h基本类型定义
winnt.h支持Unicode的类型定义
winbase.h内核函数
winuser.h用户接口函数
wingdi.h图形设备接口函数
winsock.h网络编程函数
(2)连接到指定的库文件
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
显式设置 #pragma comment(lib,"WS2_32.lib")
(3)在API函数前加"::"表示这是一个全局函数,以与C++类的成员函数区分。
调用API例子(C++)
#include "stdafx.h" // 这是VC自动添加的头文件,主要是加快编译速度
#include <windows.h> // 包含MessageBox函数声明的头文件
int main(int argc,char *argv[])
{
// 调用API函数MessageBox
int nSelect = ::MessageBox(
NULL,
"Hello,Windows",
"Greeting",
MB_OKCANCEL);
if(nSelect == IDOK)
printf("用户选择了“确定"按钮\n");
else
printf("用户选择了“取消"按钮\n");
return 0;
}