【Deepseek】Windows MFC/Win32 常用核心 API 汇总
掌握常用的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有更深入的兴趣,我可以提供更针对性的信息。