【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 释放通过GlobalAllocHeapAlloc分配的内存
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)两个版本(如CreateWindowExACreateWindowExW)。在现代开发中,应优先使用Unicode版本 (通常通过在项目设置中定义UNICODE_UNICODE宏,代码中直接使用通用函数名如CreateWindowEx即可)。
  • 错误处理 :调用API后,应检查返回值。很多API失败时会返回NULLINVALID_HANDLE_VALUEFALSE等,此时可立即调用GetLastError()获取详细的错误代码,这能极大帮助调试。
  • 资源管理 :对于返回句柄 (HANDLE, HWND, HDC, HBITMAP等)的API,在使用完毕后,务必使用对应的关闭或释放函数(如CloseHandle, DestroyWindow, DeleteDC, DeleteObject)来释放资源,防止资源泄漏
  • 64位系统兼容性 :在64位Windows上,一些数据类型(如LONG_PTR, INT_PTR)的大小会变化,以确保指针能正确存储。在处理与窗口过程、回调函数相关的数据时需特别注意。

这些API是构建Windows应用程序的基石,希望这份列表能对你的学习和开发有所帮助。如果你对某个特定类别(如网络编程、注册表操作等)的API有更深入的兴趣,我可以提供更针对性的信息。

相关推荐
好学且牛逼的马1 分钟前
golang 10指针
开发语言·c++·golang
暴走十八步2 小时前
配置windows下apache+PHP环境
windows·php·apache
侯杰3 小时前
C++ 线程安全初始化机制详解与实践
c++
每天敲200行代码4 小时前
QT 概述(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事项)
c++·qt
离越词5 小时前
C++day1作业
数据结构·c++·算法
Mercury_Lc9 小时前
【贪心 或 DFS - 面试题】小于n最大数
数据结构·c++·算法
凤年徐9 小时前
【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题
c语言·数据结构·c++·算法·leetcode·链表
羑悻的小杀马特9 小时前
【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
开发语言·c++·多线程·高性能内存池
指针刺客10 小时前
嵌入式筑基之设计模式
开发语言·c++·设计模式