傳統 DOS 程式:文字介面、16 色、順序執行。
Windows 程式:圖形介面、事件驅動、多工作業、豐富 API。
Windows 大量使用 控制代碼:32 位元無符號整數,唯一識別系統物件。
| 型別 | 代表物件 | 備註 |
|---|---|---|
| HWND | 視窗 | 最常用 |
| HINSTANCE | 應用程式實例 | 載入資源、註冊類別需用 |
| HDC | 裝置內容 | GDI 繪圖核心 |
| HMENU | 選單 | |
| HBRUSH / HPEN / HFONT | 刷子/畫筆/字型 | GDI 物件 |
| HICON / HCURSOR | 圖示/游標 | |
| HBITMAP | 位圖 | |
| HFILE | 檔案 | 較舊 API 使用 |
typedef struct tagMSG {
HWND hwnd; // 接收訊息的視窗
UINT message; // 訊息識別碼
WPARAM wParam; // 32 位元附加參數
LPARAM lParam; // 32 位元附加參數
DWORD time; // 訊息產生時間
POINT pt; // 滑鼠座標
} MSG;
| 前綴 | 類別 | 範例 |
|---|---|---|
| WM_ | 視窗訊息 | WM_PAINT, WM_DESTROY, WM_MOUSEMOVE |
| BM_ | 按鈕控制項 | BM_CLICK, BM_SETCHECK |
| CB_ | 下拉方塊 | CB_ADDSTRING, CB_GETCURSEL |
| EM_ | 編輯控制項 | EM_SETSEL, EM_REPLACESEL |
| LB_ | 清單方塊 | LB_ADDSTRING, LB_GETSEL |
| SBM_ | 捲軸控制項 | SBM_SETPOS, SBM_GETRANGE |
| 訊息 | 觸發條件 |
|---|---|
| WM_CREATE | CreateWindow 成功,視窗建立完成 |
| WM_DESTROY | 視窗銷毀 |
| WM_PAINT | 用戶區需重繪 |
| WM_CLOSE | 使用者點擊關閉鈕 |
| WM_QUIT | PostQuitMessage 呼叫,結束訊息迴圈 |
| WM_LBUTTONDOWN | 滑鼠左鍵按下 |
| WM_LBUTTONUP | 滑鼠左鍵釋放 |
| WM_KEYDOWN | 按下非系統鍵 |
| WM_CHAR | 字元輸入 (經 TranslateMessage) |
| WM_MOUSEMOVE | 滑鼠移動 |
| WM_SIZE | 視窗大小改變 |
| WM_COMMAND | 選單/控制項/快速鍵命令 |
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
詳細講解 視窗程序 (WndProc) 撰寫與第一個完整 Windows API 程式實作。