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

Windows API 入門 (一):句柄、實例、事件驅動核心概念

     編輯:VC 教學

從 DOS 到 Windows 的範式轉移

DOS 程式:循序執行、直接操作硬體、單任務。
Windows 程式:事件驅動、共享硬體資源、多任務、GUI 介面。

核心概念:句柄

句柄是 Windows 核心物件的不透明識別碼 (32/64 位整數),用於參考系統管理的資源。應用程式不可直接解讀句柄值,只能傳遞給 API。

常見句柄類型表

類型前綴代表資源典型來源 API
視窗句柄HWND視窗、對話框、按鈕、編輯框等所有可視物件CreateWindow, FindWindow
實例句柄HINSTANCE當前模組 (EXE/DLL) 在記憶體中的基址/身分WinMain 參數, GetModuleHandle
游標句柄HCURSOR滑鼠游標資源LoadCursor, CreateCursor
圖示句柄HICON圖示資源LoadIcon, CreateIcon
筆刷句柄HBRUSH填充圖案/顏色CreateSolidBrush, GetStockObject
畫筆句柄HPEN線條樣式/顏色/寬度CreatePen
字體句柄HFONT字體屬性 (字型、大小、粗細)CreateFont, CreateFontIndirect
位圖句柄HBITMAP點陣圖像LoadBitmap, CreateCompatibleBitmap
選單句柄HMENU選單結構CreateMenu, LoadMenu
裝置環境HDC繪圖表面 (螢幕、印表機、記憶體 DC)GetDC, BeginPaint, CreateCompatibleDC
進程句柄HANDLE進程物件OpenProcess, CreateProcess
執行緒句柄HANDLE執行緒物件CreateThread, OpenThread
檔案句柄HANDLE檔案/管道/序列埠等 I/O 物件CreateFile, OpenFile

事件驅動機制

  1. 使用者操作 (鍵盤/滑鼠) 或系統事件 (定時器、網路封包) 產生訊息。
  2. 訊息投遞到執行緒訊息佇列。
  3. 應用程式訊息迴圈 取出訊息:GetMessage → TranslateMessage → DispatchMessage。
  4. DispatchMessage 將訊息送達目標視窗的視窗程序。
  5. 視窗程序根據訊息類型執行對應邏輯。

關鍵訊息範例

  • 按鍵輸入 → WM_KEYDOWN / WM_CHAR / WM_KEYUP。
  • 滑鼠移動 → WM_MOUSEMOVE。
  • 滑鼠左鍵點擊 → WM_LBUTTONDOWN / WM_LBUTTONUP / WM_CLICK (由系統合成)。
  • 視窗需重繪 → WM_PAINT。
  • 定時器觸發 → WM_TIMER。

WinMain 入口點


int WINAPI WinMain(
    HINSTANCE hInstance,      // 當前實例句柄
    HINSTANCE hPrevInstance,  // Win32 恆為 NULL (16 位相容)
    LPSTR lpCmdLine,          // 命令列參數字串
    int nCmdShow              // 視窗初始顯示狀態 (SW_SHOWDEFAULT 等)
)
  • hInstance:模組在進程空間的基址,也是資源載入的鍵值。
  • 同一 EXE 多次啟動 → 多個進程,各有不同 hInstance (ASLR 下更明顯)。

第一個 API 程式骨架


#include 

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nShow)
{
    MessageBox(NULL, TEXT("Hello Windows API!"), TEXT("First API"), MB_OK);
    return 0;
}

學習路徑建議

  1. 掌握 句柄、訊息、視窗程序、訊息迴圈 四大支柱。
  2. 熟練 CreateWindow, RegisterClass, GetMessage, DispatchMessage, DefWindowProc 五大核心 API。
  3. 實作:視窗建立 → 繪製文字 → 回應滑鼠/鍵盤 → 選單/對話框 → GDI 繪圖 → 多執行緒 → DLL/COM。
  4. 工具:Spy++ (訊息監控), Dependency Walker (DLL 相依), Windows SDK 文件 (權威參考)。

Windows 句柄類型關係圖

理解句柄與事件驅動,是跨越 DOS 思維、進入 Windows 系統程式設計大門的鑰匙。

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