輸入法程式設計函式呼叫順序

2021-04-06 17:16:57 字數 1309 閱讀 3951

第一步:輸入法的啟動

當你啟動電腦, windows會從登錄檔收集所有輸入法的名稱。鍵位如下

hkey_current_user/keyboard/layout/preload

hkey_local_machine/system/currentcontrolset/control/keyboard layouts

第二步:dllmain函式

假設你啟動了某個編輯器,並選擇了你的輸入法的時候在發生著什麼呢?

ime是乙個dll檔案,地球人都知道,dll嘛,要初始化的,那麼就是接下的dllmain函式了....

dllmain - 在這裡一般註冊介面類,ui_class_name and status_class_name. 註冊的類為wndclas*** (delphi : twndclas***) ,而類的lpfnwndproc 為uiwndproc , statuswndproc;

第三步: imeinquire函式

..恩..使用這個函式你必須了解imeinfo這個結構的具體用途.它主要是負責初始化輸入法的各項效能..比如支援不支援全形模式啦,,使用不使用軟鍵盤啦 等等等...注意它是個callback函式..

第四步: imeselect

composionstring ( 輸入視窗上下文 resized, 就是長度發生變化) .

第五步: uiwndproc (with 訊息 = wm_create ) –windows 控制代碼被鎖定. 關於控制代碼和鎖定的理論, 請參考輸入法文件.

statuswndproc

這兩**函式主要負責介面工作...其中 uiwndproc幾乎是你在用輸入法的每乙個過程中都在使用,包括啟動輸入法關閉輸入法,repaint處理等等..

第六步: 假設你按下了 'b' , 會發生……..

imeprocesskey 函式回被**, 如果你想處理被按下的鍵, 取決於你返回的是true 或 false, 如果你返回true, imeasciiex 函式回被呼叫. 你可以定義乙個函式, 與ime 進行對話, 當你按下乙個鍵的時候總是 uiwndproc ( 訊息 = wm_ime_notify 會被呼叫). 你可以改變cand ui & comp ui(介面)

第七步:imeasciiex函式被呼叫. ,

你要定義輸出的字元, 並把他傳送到 應用程式中. 字元傳送到應用程式.. 可以理解為以下幾個步聚.

1.wm_ime_startcomposition

2. wm_ime_composition ( wparam = gcs_resultstr) 

3.wm_ime_endcompositon

(未完待續)

輸入法程式設計相關資源匯集

ime輸入法程式設計,關於函式,介面等等等等,偶入門時讀的,後來還一直在查 輸入法程式設計指南 貌似 http files.cnblogs.com realfun 輸入法程式設計指南.rar 漢字輸入法軟體設計技術輔導站 很多有用的內容,可惜很久不更新了,還有一些鏈結不可用 輸入法的安裝 http ...

Visual C 程式設計控制輸入法

5 加入選擇輸入法成員函式 bool cinputlanguage selectinputlanguage il pil return true 6 其它部分 cinputlanguage cinputlanguage cinputlanguage cinputlanguage 消除鍊錶記憶體。vo...

輸入法控制

unit u ime inte ce implementation uses windows,forms,imm,sysutils,messages varstmpclassname,stmpime string 失去焦點時的控制項名稱和輸入法名稱 msghandle hhook 0 判斷當前類名是...