首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows API 視窗與控制項核心函式完整參考指南

     編輯:關於C++

概述

Windows API 提供超過 100 個視窗管理函式,涵蓋建立、銷毀、位置調整、狀態查詢、巢狀關係、顯示控制等核心功能。本文將官方文件中的函式依功能分類整理,並附上關鍵參數說明與實務使用提示,作為開發者快速查閱手冊。

分類彙總表

1. 視窗建立與銷毀

函式用途關鍵備註
CreateWindow / CreateWindowEx建立視窗實例Ex 版支援擴充風格 (WS_EX_*)
DestroyWindow銷毀視窗及所有子視窗發送 WM_DESTROY、WM_NCDESTROY
CloseWindow最小化視窗 (非關閉)易誤解,實為 ShowWindow(hWnd, SW_MINIMIZE)

2. 視窗位置、大小與 Z-Order

函式用途
SetWindowPos統一設定位置、大小、Z-Order、顯示狀態 (最強彈性)
MoveWindow簡易移動/縮放
BringWindowToTop / SetForegroundWindow置頂/前景視窗
GetWindowRect / GetClientRect取得螢幕/客戶區矩形
AdjustWindowRect / AdjustWindowRectEx由客戶區尺寸反推視窗外框尺寸

3. 視窗狀態與屬性查詢/設定

函式用途
GetWindowLong / SetWindowLong (Ptr)存取視窗額外記憶體 (GWL_USERDATA, GWL_STYLE, GWL_EXSTYLE...)
GetClassLong / SetClassLong存取視窗類別屬性 (圖標、游標、背景刷、WNDPROC...)
GetWindowPlacement / SetWindowPlacement取得/設定完整顯示狀態 (正常/最小化/最大化/位置)
IsWindowVisible / IsIconic / IsZoomed布林狀態查詢
EnableWindow啟用/停用輸入

4. 視窗巢狀與關係

函式用途
GetParent / SetParent父視窗查詢/重設
GetTopWindow / GetWindow (GW_HWNDNEXT/CHILD/FIRST)遍歷子視窗/同層視窗
EnumChildWindows / EnumThreadWindows / EnumWindows回呼列舉子視窗/執行緒視窗/頂層視窗
IsChild判斷父子關係
FindWindow / FindWindowEx依類別/標題尋找視窗

5. 焦點、輸入與滑鼠捕捉

函式用途
SetFocus / GetFocus輸入焦點控制
SetCapture / ReleaseCapture / GetCapture滑鼠捕捉
GetActiveWindow / GetForegroundWindow作用中/前景視窗
AttachThreadInput跨執行緒共享輸入狀態 (需同桌面)

6. 更新、重繪與驗證

函式用途
InvalidateRect / ValidateRect標記/清除需重繪區域
UpdateWindow / RedrawWindow立即重繪 / 進階重繪控制
LockWindowUpdate鎖定視窗更新 (僅一視窗有效)
GetUpdateRect / GetUpdateRgn取得需更新區域

7. 矩形與座標轉換工具函式

函式用途
SetRect / CopyRect / EqualRect / IsRectEmptyRECT 結構基本操作
InflateRect / OffsetRect / IntersectRect / UnionRect / SubtractRect幾何運算
PtInRect點包含測試
ClientToScreen / ScreenToClient / MapWindowPoints座標系轉換

8. 彈出式視窗與最小化管理

函式用途
ArrangeIconicWindows排列最小化子視窗
CascadeWindows / TileWindows層疊/平鋪排列
ShowOwnedPopups顯示/隱藏擁有的彈出視窗
GetLastActivePopup取得最近作用中的彈出視窗

9. 動畫與特效

函式用途
DrawAnimatedRects繪製動畫矩形 (最小化/最大化轉場)
FlashWindow / FlashWindowEx閃爍標題列/工作列按鈕
AnimateWindow視窗開關動畫 (滾動/淡入/置中展開)

10. 幫助與內容相關

函式用途
GetWindowContextHelpId / SetWindowContextHelpIdWhat's This? 說明內容 ID
WinHelp / HtmlHelp啟動說明系統

實務開發提示

  • DPI 感知:Win10+ 建議使用 GetDpiForWindow + AdjustWindowRectExForDpi 取代傳統函式。
  • 64 位元相容:務必使用 GetWindowLongPtr/SetWindowLongPtr (GWLP_*) 取代舊版 Long 版本。
  • 視窗類別註冊:WNDCLASSEX 的 cbSize 必須正確設定,hInstance 傳模組句柄,lpfnWndProc 指向靜態/全域視窗程序。
  • 非同步 vs 同步:PostMessage 非阻塞投遞佇列,SendMessage 同步阻塞直到處理完成,UI 執行緒慎用 SendMessage 避免死結。

結語

掌握視窗管理 API 是 Windows 桌面開發的基石。建議開發者以 SetWindowPos 為核心操作,配合 GetWindowRect/GetClientRect 進行座標運算,善用 EnumChildWindows 進行樹狀遍歷,並養成使用 *Ptr 版本 API 的習慣以確保 64 位元相容。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved