訊息是 Windows 發送給應用程式的通知,告知某事件發生(如滑鼠點擊、視窗大小變更、鍵盤輸入)。訊息以記錄 TMsg 傳遞,包含訊息類型與相關資訊(如滑鼠座標)。
type TMsg = packed record hwnd: HWND; // 視窗控制代碼 message: UINT; // 訊息常數識別碼 wParam: WPARAM; // 32 位訊息特定附加資訊 lParam: LPARAM; // 32 位訊息特定附加資訊 time: DWORD; // 訊息建立時間 pt: TPoint; // 訊息建立時滑鼠位置 end;
| 常數 | 值 | 說明 |
|---|---|---|
| WM_NULL | $0000 | 空訊息 |
| WM_CREATE | $0001 | 應用程式建立視窗 |
| WM_DESTROY | $0002 | 視窗被銷毀 |
| WM_MOVE | $0003 | 移動視窗 |
| WM_SIZE | $0005 | 改變視窗大小 |
| WM_ACTIVATE | $0006 | 視窗被啟用或失去啟用 |
| WM_SETFOCUS | $0007 | 獲得焦點 |
| WM_KILLFOCUS | $0008 | 失去焦點 |
| WM_ENABLE | $000A | 改變啟用狀態 |
| WM_SETREDRAW | $000B | 設定視窗是否可重繪 |
| WM_SETTEXT | $000C | 設定視窗文字 |
| WM_GETTEXT | $000D | 複製視窗文字到緩衝區 |
| WM_GETTEXTLENGTH | $000E | 取得視窗文字長度 |
| WM_PAINT | $000F | 要求視窗重繪 |
| WM_CLOSE | $0010 | 視窗/應用程式關閉信號 |
| WM_QUERYENDSESSION | $0011 | 使用者選擇結束對話框或呼叫 ExitWindows |
| WM_QUIT | $0012 | 結束程式運行或呼叫 PostQuitMessage |
| WM_QUERYOPEN | $0013 | 視窗恢復原大小位置時發送給圖示 |
| WM_ERASEBKGND | $0014 | 視窗背景必須被擦除 |
| WM_SYSCOLORCHANGE | $0015 | 系統顏色改變,發送給所有頂層視窗 |
| WM_ENDSESSION | $0016 | 通知應用程式對話是否結束 |
| WM_SYSTEMERROR | $0017 | 系統錯誤 |
| WM_SHOWWINDOW | $0018 | 隱藏/顯示視窗 |
| WM_ACTIVATEAPP | $001C | 通知應用程式哪視窗啟用/非啟用 |
| WM_FONTCHANGE | $001D | 系統字體資源庫變化 |
| WM_TIMECHANGE | $001E | 系統時間變化 |
| WM_CANCELMODE | $001F | 取消進行中的模態操作 |
| WM_SETCURSOR | $0020 | 滑鼠移動且未捕獲輸入時 |
| WM_MOUSEACTIVATE | $0021 | 游標在非啟用視窗中且按下滑鼠鍵 |
| WM_CHILDACTIVATE | $0022 | MDI 子視窗被點擊標題列、啟用、移動、改變大小 |
| WM_QUEUESYNC | $0023 | CBT 程式透過 WH_JOURNALPLAYBACK hook 分離使用者輸入 |
| WM_GETMINMAXINFO | $0024 | 視窗即將改變大小/位置 |
| WM_PAINTICON | $0026 | 最小化視窗圖示將重繪 |
| WM_ICONERASEBKGND | $0027 | 最小化視窗繪製圖示前背景需重繪 |
| WM_NEXTDLGCTL | $0028 | 對話框程式改變焦點位置 |
| WM_SPOOLERSTATUS | $002A | 列印隊列增減作業 |
| WM_DRAWITEM | $002B | Button/Combobox/Listbox/Menu 視覺外觀改變 |
| WM_MEASUREITEM | $002C | 控件建立時通知擁有者尺寸 |
| WM_DELETEITEM | $002D | Listbox/Combobox 被銷毀或項目刪除 |
| WM_VKEYTOITEM | $002E | LBS_WANTKEYBOARDINPUT 風格響應 WM_KEYDOWN |
| WM_CHARTOITEM | $002F | 同上響應 WM_CHAR |
| WM_SETFONT | $0030 | 繪製文字時取得控件字體 |
| WM_GETFONT | $0031 | 取得目前控件繪製文字字體 |
| WM_SETHOTKEY | $0032 | 視窗與熱鍵關聯 |
| WM_GETHOTKEY | $0033 | 判斷熱鍵與視窗關聯 |
| WM_QUERYDRAGICON | $0037 | 最小化視窗拖放需圖示 |
| WM_COMPAREITEM | $0039 | 判定 Combobox/Listbox 新項相對位置 |
| WM_GETOBJECT | $003D | 取得物件介面 |
| WM_COMPACTING | $0041 | 顯示記憶體不足 |
| WM_WINDOWPOSCHANGING | $0046 | 視窗大小位置即將改變 (SetWindowPos) |
| WM_WINDOWPOSCHANGED | $0047 | 視窗大小位置已改變 |
| WM_POWER | $0048 | 系統即將進入暫停 (16 位) |
| WM_COPYDATA | $004A | 應用程式間傳遞資料 |
| WM_CANCELJOURNAL | $004B | 使用者取消程式日誌啟用 |
| WM_NOTIFY | $004E | 控件事件發生或需資訊,通知父視窗 |
| WM_INPUTLANGCHANGEREQUEST | $0050 | 使用者選擇輸入語言或熱鍵改變 |
| WM_INPUTLANGCHANGE | $0051 | 輸入語言環境已改變 |
| WM_TCARD | $0052 | 程式初始化 Windows Help |
| WM_HELP | $0053 | 使用者按 F1,發送給相關選單/視窗 |
| WM_USERCHANGED | $0054 | 使用者登入/登出,更新設定 |
| WM_NOTIFYFORMAT | $0055 | 判斷控件用 ANSI/UNICODE 結構 |
| WM_CONTEXTMENU | $007B | 視窗中右鍵點擊 |
| WM_STYLECHANGING | $007C | SetWindowLong 即將改變視窗風格 |
| WM_STYLECHANGED | $007D | SetWindowLong 已改變視窗風格 |
| WM_DISPLAYCHANGE | $007E | 顯示器解析度改變 |
| WM_GETICON | $007F | 取得視窗大/小圖示控制代碼 |
| WM_SETICON | $0080 | 設定視窗大/小圖示 |
| WM_NCCREATE | $0081 | 視窗首次建立,在 WM_CREATE 前 |
| WM_NCDESTROY | $0082 | 非用戶區正在銷毀 |
| WM_NCCALCSIZE | $0083 | 計算用戶區域 |
| WM_NCHITTEST | $0084 | 滑鼠移動、按下、釋放 |
| WM_NCPAINT | $0085 | 視窗框架需繪製 |
| WM_NCACTIVATE | $0086 | 非用戶區啟用狀態改變 |
此表涵蓋從 WM_NULL 至 WM_NCACTIVATE 的核心訊息,供視窗程式開發查閱。