掌握常用的API函数是Windows MFC/Win32开发的基础。我为你整理了50个核心且常用的API,并尽力确保了信息的准确性。下面是一个汇总表格,方便你快速了解:
类别 | API 名称 | 功能描述 |
---|---|---|
窗口管理 | CreateWindow / CreateWindowEx |
创建窗口 |
ShowWindow |
显示或隐藏窗口 | |
UpdateWindow |
立即更新窗口客户区 | |
DestroyWindow |
销毁指定窗口 | |
GetWindowRect |
获取窗口的屏幕坐标矩形 | |
MoveWindow |
改变窗口的位置和尺寸 | |
SetWindowText |
设置窗口标题栏文本(如果适用)或控件(如按钮)的文本 | |
GetWindowText |
获取窗口标题栏文本或控件文本 | |
EnableWindow |
启用或禁用窗口(或控件)的鼠标和键盘输入 | |
FindWindow |
根据类名或窗口名查找顶层窗口 | |
EnumWindows |
枚举所有顶层窗口 | |
消息处理 | GetMessage |
从消息队列中获取消息 |
TranslateMessage |
翻译虚拟键消息到字符消息 | |
DispatchMessage |
将消息分发给窗口过程 | |
PostMessage |
将消息放入线程的消息队列后立即返回,不等待处理 | |
SendMessage |
将消息直接发送到窗口过程并等待处理完毕 | |
SendMessageTimeout |
发送消息并等待指定超时时间 | |
SendNotifyMessage |
发送消息后立即返回,不等待处理,但成功与否会通知 | |
RegisterWindowMessage |
定义一个新的窗口消息,保证系统唯一 | |
PeekMessage |
检查消息队列,有消息可获取,无消息也可立即返回 | |
图形设备接口 | BitBlt |
执行位图块传输,用于图像复制和移动 |
CreateCompatibleDC |
创建与指定设备兼容的内存设备上下文 | |
CreateSolidBrush |
创建实心画刷 | |
CreatePen |
创建画笔 | |
SelectObject |
将GDI对象(如位图、画刷、画笔)选入设备上下文 | |
DeleteObject |
删除GDI对象(如画刷、画笔、位图),释放其资源 | |
TextOut |
在设备上下文(如窗口)上输出文本 | |
Rectangle |
绘制矩形 | |
Ellipse |
绘制椭圆 | |
LineTo |
画一条线到指定点 | |
MoveToEx |
移动当前画笔位置 | |
GetDeviceCaps |
获取设备(如显示器、打印机)的特定信息,如分辨率、颜色位数等 | |
文件与系统操作 | CreateFile |
创建或打开文件或I/O设备对象 |
ReadFile |
从文件读取数据 | |
WriteFile |
向文件写入数据 | |
CloseHandle |
关闭打开的对象句柄(文件、进程、线程、互斥体等) | |
GetFileSize |
获取文件大小 | |
CopyFile |
复制文件 | |
DeleteFile |
删除文件 | |
CreateDirectory |
创建新目录 | |
GetCurrentDirectory |
获取进程的当前目录 | |
SetCurrentDirectory |
设置进程的当前目录 | |
内存管理 | GlobalAlloc / HeapAlloc |
在堆上分配指定大小的内存块(HeapAlloc 更现代) |
GlobalFree / HeapFree |
释放通过GlobalAlloc 或HeapAlloc 分配的内存 |
|
VirtualAlloc |
在进程的虚拟地址空间中保留或提交内存页(更底层,通常用于特殊需求) | |
VirtualFree |
释放或注销通过VirtualAlloc 分配的内存 |
|
memcpy |
复制内存内容(C运行时函数,但常用) | |
RtlMoveMemory |
移动内存块(功能类似memcpy ) |
|
进程与线程 | CreateProcess |
启动一个新的进程及其主线程 |
CreateThread |
在当前进程中创建一个新线程(注意:使用_beginthreadex 可能更好) |
|
ExitProcess |
结束当前进程及其所有线程 | |
ExitThread |
结束调用线程 | |
WaitForSingleObject |
等待一个对象(如进程、线程)变为信号状态,可指定超时 | |
GetCurrentProcessId |
获取当前进程的标识符 | |
GetCurrentThreadId |
获取当前线程的标识符 | |
Sleep |
使当前线程挂起执行指定的毫秒数 | |
控件与对话框 | DialogBoxParam |
创建模态对话框 |
CreateDialogParam |
创建非模态对话框 | |
EndDialog |
关闭模态对话框 | |
GetDlgItem |
获取对话框中指定控件的句柄 | |
SetDlgItemText |
设置对话框中控件的文本 | |
GetDlgItemText |
获取对话框中控件的文本 | |
SendDlgItemMessage |
向对话框控件发送消息 | |
CheckDlgButton |
设置复选框或单选按钮的选择状态 | |
IsDlgButtonChecked |
获取复选框或单选按钮的选择状态 | |
MessageBox |
显示一个消息框 | |
其他工具类 | GetTickCount |
获取系统启动后经过的毫秒数(常用于粗略计时) |
GetLocalTime / GetSystemTime |
获取本地或系统时间(UTC) | |
SetLocalTime / SetSystemTime |
设置本地或系统时间 | |
ShellExecute |
执行外部操作(如打开文件、打印、浏览网站),无需知道具体可执行文件路径 |
🧭 学习和使用建议
掌握这些API是Windows编程的基础。除了查阅表格,你还可以:
- 查阅官方文档 :权威和准确的信息永远首选 Microsoft Learn。
- 动手实践:自己编写小程序来调用这些API,是理解它们用法和效果的最佳途径。
- 利用调试工具:如Visual Studio的调试器,可以帮你观察API调用前后参数和状态的变化。
- 阅读开源代码:学习优秀的开源项目是如何使用这些API的。
⚠️ 重要提醒
- Unicode与ANSI :许多API有
A
(ANSI,多字节)和W
(Wide-character,Unicode)两个版本(如CreateWindowExA
和CreateWindowExW
)。在现代开发中,应优先使用Unicode版本 (通常通过在项目设置中定义UNICODE
和_UNICODE
宏,代码中直接使用通用函数名如CreateWindowEx
即可)。 - 错误处理 :调用API后,应检查返回值。很多API失败时会返回
NULL
、INVALID_HANDLE_VALUE
或FALSE
等,此时可立即调用GetLastError()
获取详细的错误代码,这能极大帮助调试。 - 资源管理 :对于返回句柄 (HANDLE, HWND, HDC, HBITMAP等)的API,在使用完毕后,务必使用对应的关闭或释放函数(如
CloseHandle
,DestroyWindow
,DeleteDC
,DeleteObject
)来释放资源,防止资源泄漏。 - 64位系统兼容性 :在64位Windows上,一些数据类型(如
LONG_PTR
,INT_PTR
)的大小会变化,以确保指针能正确存储。在处理与窗口过程、回调函数相关的数据时需特别注意。
这些API是构建Windows应用程序的基石,希望这份列表能对你的学习和开发有所帮助。如果你对某个特定类别(如网络编程、注册表操作等)的API有更深入的兴趣,我可以提供更针对性的信息。