Windows 輸入法程式設計 (上) (轉)

worldblog發表於2007-12-13
Windows 輸入法程式設計 (上) (轉)[@more@]

第一章 9x下漢字輸入法的基本原理

  Windows系統下漢字輸入法實際上是將輸入的標準ascii字串按照一定的編碼規則轉換為漢字或漢字串,進入到目的地。由於應用各不相同,不可能自己去設計轉換程式,因此,漢字輸入自然而然落到WINDOWS中。

一、輸入法與系統的關係

     鍵盤事件  應用程式
       |    |
      Windows的USER.EXE
         |
       輸入法管理器
         |
        輸入法 

  系統的鍵盤事件有windows的user.exe接收後,user.exe在將鍵盤事件傳導輸入法管理器(Input Method Manager,簡稱IMM)中,管理器 再將鍵盤事件傳到輸入法中,輸入法根據使用者編碼字典,翻譯鍵盤事件為對應的漢字(或漢字串),然後再反傳到user.exe中,user.exe再將翻譯後的鍵盤事件傳給當前正執行的應用程式,從而完成漢字的輸入。

二、漢字輸入法的組成

Windows9x系統中漢字輸入法的名稱是"Input Method Editor" ,簡稱IME,輸入法的程式名稱為:*.ime,資料名稱為*.MB,即通常說的輸入法編碼表(字典).

實際上IME檔案是一個動態連線庫程式(DLL),它與dll檔案沒有區別,只是名稱不同而已。

一般漢字輸入法都由三個視窗組成:

狀態視窗(Status Windows)-顯示當前的輸入法狀態(中文還是英文等站環資訊);

編碼輸入視窗(Composition Windows)-顯示當前擊鍵情況;

漢字選擇視窗(Candidates Windows)-列出當前編碼的全部漢字(串),供使用者選擇或查詢。

上述三個視窗由基本的使用者介面(User Interface )管理著。

現在我們用Dumpbin.exe開啟微軟提供的拼音輸入法(WINDOWSSYSTEMWINPY.IME)看看它有什麼組成(這裡一WINDOWS98為例,並假定windows系統在c:盤下):

C:Dumpbin c:windowssystemwinpy.ime

(R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


Dump of file WINPY.IME

File Type: DLL       //IME 實際為dll程式

Section contains the following exports for WINPY.ime

0 characteristics
34A37323 time date stamp Fri Dec 26 17:04:35 1997
0.00 version
1 ordinal base
19 number of functions //共有19個函式
19 number of names     // 對應19個名稱 

ordinal hint RVA name

1 0 0000A010 CandWndProc  //"選擇漢字視窗"註冊函式
2 1 0000E750 CompWndProc  //"輸入編碼視窗"註冊函式
3 2 0000FB50 ImeConfigure  //當前ime引數函式 
4 3 0000FEC0 ImeConversionList//將字元或字串轉換成目標字元
5 4 0000FFA0 ImeDestroy   //退出當前使用的IME
6 5 000030D0 ImeEnumRegister
7 6 0000FFB0 ImeEscape //應用軟體訪問輸入法的介面函式.
8 7 00003080 ImeGetRegisterWordStyle
9 8 0000E9A0 ImeInquire      //啟動並初始化當前IME輸入法
10 9 0000A800 ImeProcessKey    //IME輸入鍵盤事件管理函式
11 A 00002C20 ImeRegisterWord //向輸入法字典註冊字串
12 B 000109A0 Ime //啟動當前IME輸入法
13 C 000109E0 ImeSetActiveContext //設定當前的輸入處於活動狀態.
14 D 0000C850 ImeSetCompositionString 由應用程式設定輸入法編碼
15 E 0000AEE0 ImeToAsciiEx    //將輸入的鍵盤事件轉換為漢字編碼事件
16 F 00002F40 ImeUnregisterWord //刪除被註冊的字串.
17 10 0000CA90 NotifyIME   //IME事件管理函式
18 11 00005160 StatusWndProc //狀態視窗註冊函式
19 12 00002350 UIWndProc   //使用者介面介面函式


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992865/,如需轉載,請註明出處,否則將追究法律責任。

相關文章