windows.h是在可在CC++中使用的仅用于Windows的头文件,其中包含所有Windows API中函数的声明、程序员常用的Windows宏和各种函数所要使用到的数据类型子系统。它定义了大量可在C和C++中使用的适用于Windows的特定函数。在源文件中添加windows.h头文件并将其链接到对应的lib中,就可以将Win32 API包含到项目里边。假如你要使用***.dll中所包含的函数,那么你就应该将程序链接到***.lib中(在MinGW中,这个扩展将会变为***.dll.a)。一些头文件不会与.dll 关联,而与静态库关联(例如scrnsave.h 需要scrnsave.lib)。

包含的头文件

windows.h中本身包含许多子头文件。由于它们之间特殊的依赖关系,这些子头文件很多都不能被程序单独地包含(它们不是自包含的)。

下面是Windows.h头文件中可能包含的头文件与它们各自的作用的一个对照:

  • excpt.h异常处理
  • stdarg.h –变量参数函数(也是标准 C 头文件)
  • windef.h –各种宏和类型
  • winnt.h –各种宏和类型(适用于Windows NT
  • basetsd.h –各种类型
  • guiddef.hGUID类型
  • ctype.h –字符分类(标准 C 标头)
  • string.h –字符串和缓冲区(标准 C 标头)
  • winbase.hkernel32.dll :内核服务; advapi32.dll :内核服务(例如CreateProcessAsUser 函数),访问控制(例如AdjustTokenGroups 函数)。
  • winerror.h – Windows 错误代码
  • wingdi.hGDI (图形设备接口)
  • winuser.h – user32.dll :用户服务
  • winnls.h – NLS(本地语言支持)
  • wincon.h控制台服务
  • winver.h –版本信息
  • winreg.hWindows 注册表
  • winnetwk.h – WNet(Windows 网络)
  • winsvc.hWindows 服务SCM (服务控制管理器)
  • imm.hhhIME (输入法编辑器)

额外包括的

  • cderr.hCommDlgExtendedError函数错误代码
  • commdlg.h –常用对话框
  • dde.hDDE (动态数据交换)
  • ddeml.h – DDE 管理库
  • dlgs.h –常用对话框的各种常量
  • lzexpand.hLZ (Lempel-Ziv) 压缩/解压缩
  • mmsystem.h – Windows 多媒体
  • nb30.hNetBIOS
  • rpc.hRPC (远程过程调用)
  • shellapi.hWindows Shell API
  • wincrypt.h加密 API
  • winperf.h –性能监控
  • winresrc.h –用于资源
  • winsock.hWinsock (Windows 套接字),1.1 版
  • winspool.h打印后台处理程序
  • winbgim.h –标准图形库

OLE 和 COM 相关

  • ole2.h – OLE (对象链接和嵌入)
  • objbase.h – COM (组件对象模型)
  • oleauto.h – OLE 自动化
  • olectlid.h –各种GUID定义

有几个宏会影响 windows.h 的行为。

  • UNICODE –定义后,这会导致TCHAR直接成为WCHAR而不是CHAR的同义词,并且所有使用文本的类型通用 API 函数和消息都将定义为 -W 版本而不是 -A 版本。 (它类似于 Windows C 运行时的 _UNICODE 宏。 )
  • RC_INVOKED –在资源编译器 (RC. EXE) 正在使用,而不是 C 编译器。
  • WINVER –用于启用仅在较新操作系统中可用的功能。对于 Windows XP将其定义为 0x0501,对于Windows Vista将其定义为 0x0600。
  • WIN32_LEAN_AND_MEAN –用于减小头文件的大小并加快编译速度。不包括密码学DDERPCWindows ShellWinsock 之类的东西

补充