Windows 95 引入全新輸入法架構 (IME),作為動態連結庫 (DLL) 運行,深度整合於多語言鍵盤配置中。相較 Win 3.1,提供多輸入上下文、執行緒級活動 IME、應用程式訊息迴路整合等增強功能。本文系統解析 IME 核心架構、使用者介面、輸入上下文、訊息生成與軟鍵盤機制,為 IME 開發者提供完整技術參考。
| 層級 | 特徵 |
|---|---|
| 無支援 | 不控制 IME,僅被動接收 DBCS 字元 |
| 部分支援 | 控制 IME 開關、撰寫視窗,不重繪 UI,使用預定義 "IME" 類建立視窗 |
| 完整支援 | 自行管理輸入上下文,直接顯示所有 IME 資訊,不使用 IME 視窗 |
DefWindowProc 處理訊息。HIMC),透過 GetWindowLong(hWnd, IMMGWL_IMC) 取得。WM_IME_*) 傳遞給 DefWindowProc,即使未處理也必須自行消費。hCompStr (撰寫字串)、hCandInfo (候選資訊)、hGuideLine (引導行)、hPrivate (私有資料)、hMsgBuf (訊息緩衝)。ImmLockIMC/ImmUnlockIMC、ImmLockIMCC/ImmUnlockIMCC,支援參考計數。IME 透過兩種管道生成 WM_IME_STARTCOMPOSITION、WM_IME_COMPOSITION 等訊息:
lpdwTransBuf,IME 填入訊息結構 (訊息碼、wParam、lParam),回傳訊息數量。hMsgBuf 存儲額外訊息,配合 ImmGenerateMessage 發送至目標視窗。ImeInquire 中設定 fdwUICaps = UI_CAP_SOFTKBD 宣告支援。ImmCreateSoftKeyboard 建立視窗,ImmShowSoftKeyboard 顯示/隱藏。IMC_SETSOFKBDSUBTYPE、IMC_SETSOFKBDDATA。
ImmGet/SetCompositionWindow // 撰寫視窗位置/樣式
ImmGet/SetCandidateWindow // 候選視窗位置/樣式
ImmGet/SetCompositionString // 撰寫字串/屬性/子句存取
ImmGet/SetCompositionFont // 撰寫字型
ImmGetNumCandidateList // 候選列表數量
ImmGetCandidateList // 取得候選列表
ImmGetGuideLine // 取得引導行
ImmGet/SetConversionStatus // 轉換模式 (輸入/拼音/注音等)
ImmGet/SetOpenStatus // IME 開關狀態
ImmNotifyIME // 通知 IME 內部事件
ImmCreate/Destroy/ShowSoftKeyboard // 軟鍵盤生命週期
掌握 Windows 95 IME 架構精髓,能開發出與系統深度整合、支援多執行緒/多上下文、提供豐富使用者體驗的專業輸入法產品。