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 之類的東西

補充