IME管理基本函数

Windows9x系统提供的ime管理函数  
   
    上一章,我们介绍了ime文件中必须设计的函数,这些函数要靠我们自己来设计。要完成这些函数的设计,需用到windows系统提供的管理函数(Input    
  Method   Manager,简称IMM)。  
   
          IMM函数可以被IME函数使用,也可用于应用软件直接管理IME。  
   
          相关术语:  
   
                  (1)input   method   context    
  简称IMC--输入法相关部分,在这里解释为:相关连的应用程序(进程)  
   
                  (2)component   of   the   input   context        
  简称IMCC--IMC的部件,是INPUTCONTEXT   结构的成员。  
   
  一、IME中使用的IMM函数清单  
   
  ImmGetCompositionWindow                      //取编码窗口信息
      
  ImmSetCompositionWindow                     //设置编码窗口信息  
   
  ImmGetCandidateWindow                     //取选择窗口信息  
   
  ImmSetCandidateWindow                   //设置选择窗口信息  
   
  ImmGetCompositionString                   //取编码窗口的某一信息  
   
  ImmSetCompositionString                   //设置编码窗口的某一信息  
   
  ImmGetCompositionFont                     //取编码字体  
   
  ImmSetCompositionFont                       //设置编码字体  
   
  ImmGetNumCandidateList                      //取选择区中编码数  
   
  ImmGetCandidateList                        //取选择区中编码  
   
  ImmGetGuideLine  
   
  ImmGetConversionStatus                //取当前输入法的状态(ACSII,SHAPE,FULL等)  
   
  ImmGetConversionList                         //重新获得选择区转换表  
   
  ImmGetOpenStatus                              //取输入法打开属性 
 
  ImmSetConversionStatus                       //设置输入法状态  
   
  ImmSetOpenStatus                            //设置输入法打开状态  
   
  ImmNotifyIME                                 //通报IME,输入法状态被改变  
   
  ImmGenerateMessage                          //将我们的汉字串法发送到与当前输入法相关联的应用软件中  
                   
  ImmRequestMessage                             //向应用程序发送WM_IME_REQUEST  
   
  ImmLockIMC                              //获取当前IMC的INPUTCONTEXT结构信息,增加IMC计数器  
                   
  ImmUnlockIMC                                 //释放IMC计数器  
                   
  ImmGetIMCLockCount                           //取计数器值  
                   
  ImmCreateIMCC                                //创建INPUTCONTEXT结构的一个成员  
                   
  ImmDestroyIMCC                     //删除IMC成员缓冲区  
                   
  ImmLockIMCC                             //取IMCC缓冲地址,同时使IMCC的计数器值增加  
                 
  ImmUnlockIMCC                             //递减IMCC计数器  
                   
  ImmReSizeIMCC                            //重新设置IMC的成员的缓冲区大小  
                 
  ImmGetIMCCSize                               //取IMC成员的缓冲区大小  
                         
  ImmGetIMCCLockCount                 //返回IMC计数器值  
                         
  ImmGetHotKey                               //取输入法状态键,该函数供控制面板使用  
   
  ImmSetHotKey                             //设置输入法的热键  
                         
  ImmCreateSoftKeyboard                      //产生一个软键盘  
                         
  ImmDestroySoftKeyboard                       //销毁软键盘  
                         
  ImmShowSoftKeyboard               //显示或隐藏软键盘  


二、IMM函数使用格式说明  
   
  1、BOOL   WINAPI   ImmGenerateMessage(                          
  //将我们的汉字串法发送到与当前输入法相关联的应用软件中  
                  HIMC   hIMC                                                                                                          
  //与当前输入法相关联的应用软件的句柄,  
   
  //该结构的hMsgBuf项即为汉字串消息  
                  )  
   
            成功为TRUE,否则为FALSE  
   
  2、LRESULT   WINAPI     ImmRequestMessage(             //向应用程序发送WM_IME_REQUEST  
   
                                                                                                                                                             
        //只是用于w98及w2000  
                          HIMC   hIMC,                                                                                                    
  //与当前输入法相关联的应用软件的句柄  
                          WPARAM   wParam,                                                                                
  //与WM_IME_REQUEST相关的wP  
                          LPARAM   lParam                                                                                      
  //与WM_IME_REQUEST相关的LP  
   
                                                                                                                                                             
      //=IMR_COMPOSITIONWINOW  
   
                                                                                                                                                             
        //=IMR_CANDIDATEWINDOW  
   
                                                                                                                                                             
        //=IMR_COMPOSITIONFONT  
   
                                                                                                                                                             
          //=IMR_RECONVERTSTRING  
   
                                                                                                                                                             
          //=IMR_CONFIRMRECONVERTSTRING  
   
                                                                                                                                                             
          //=IMR_QUERYCHARPOSITION  
   
                                                                                                                                                             
          //=IMR_DOCUMENTFEED  
   
   
                  )  
   
  3、LPINPUTCONTEXT     WINAPI   ImmLockIMC(            
  //获取当前IMC的INPUTCONTEXT结构信息,增加IMC   计数器  
                          HIMC   hIMC                                                                                                        
  //当前应用程序句柄  
                          )  
   
                  成功返回INPUTCONTEXT   结构指针,否则为NULL  
   
  4、BOOL   WINAPI   ImmUnlockIMC(         //释放IMC计数器  
                          HIMC   hIMC                                                                     //当前应用程序句柄  
                          )  
   
                    返回:如果IMC计数器被减少到0了,返回FALSE,否则为TRUE.  
   
        注意:ImmLockIMC与ImmUnlockIMC必须成对出现,必须是相同的HIMC  
   
  5、HIMCC   WINAPI   ImmGetIMCLockCount(                 //取计数器值  
                          HIMC   hIMC                                                                                                    
  //当前应用程序句柄  
                  )  
   
                如果成功返回HIMC的计数器值,否则为NULL.  
   
  6、HIMCC   WINAPI   ImmCreateIMCC(                             //创建INPUTCONTEXT结构的一个成员  
                          DWORD   dwSize                                                                              
  //成员的缓冲区长度  
                  )  
   
        如果成功返回IMC的成员句柄,否则为NULL  
   
  7、HIMCC   WINAPI   ImmDestroyIMCC(                       //删除IMC成员缓冲区  
                          HIMCC   hIMCC                                                                                
  //被删除的IMC的成员  
                  )  
   
  如果成功返回NULL,否则等于该HIMCC.  
   
  8、LPVOID   WINAPI     ImmLockIMCC(              
  //取IMCC缓冲地址,同时使IMCC的计数器值增加  
                          HIMCC   hIMCC                                                                   //IMC成员句柄  
                  )  
   
  If   the   function   is   successful,   the   return   value   is   the   pointer   for   the   IMC    
  component.   Otherwise,   the   return   value   is   NULL.  
   
  9、BOOL   WINAPI   ImmUnlockIMCC(             //递减IMCC计数器  
                          HIMCC   hIMCC                                                                 //IMC成员句柄  
                  )  
   
              如果IMCC的计数器值为零,则返回   FALSE,否则为TRUE.  
   
  10、HIMCC   WINAPI   ImmReSizeIMCC(   //重新设置IMC的成员的缓冲区大小  
                          HIMCC   hIMCC,                                                                       //IMC的成员句柄  
                          DWORD   dwSize                                                                   //新缓冲区大小  
                  )  
   
                  如果成功,返回新的HIMCC,否则为   NULL.  
   
  11、DWORD   WINAPI   ImmGetIMCCSize(               //取IMC成员的缓冲区大小  
                                  HIMCC   hIMCC                                                                            
  //IMC成员句柄  
                          )  
   
                        返回IMC成员的缓冲区大小  
   
  12、DWORD   WINAPI   ImmGetIMCCLockCount(       //返回IMC计数器值  
                                  HIMCC   hIMCC                                                                                        
  //IMC成员的句柄  
                          )  
   
                  成功返回该IMCC的计数器值,否则为0  
   
  13、BOOL   WINAPI   ImmGetHotKey(                        
  //取输入法状态键,该函数供控制面板使用  
                                  DWORD   dwHotKeyID,  
                                  LPUINT   lpuModifiers,  
                                  LPUINT   lpuVKey,  
                                  LPHKL   lphKL  
                          )  
   
  14、BOOL   WINAPI   ImmSetHotKey(         //设置输入法的热键  
                                  DWORD   dwHotKeyID,  
                                  UINT   uModifiers,  
                                  UINT   uVKey,  
                                  hKL   hKL  
                          )  
   
  15、HWND   WINAPI   ImmCreateSoftKeyboard(                       //产生一个软键盘  
                                  UINT   uType,                                                                                                      
          //软件盘上的键码含义的定义方式  
   
                                                                                                                                                             
      //=SOFTKEYBOARD_TYPE_T1  
   
                                                                                                                                                             
  //=SOFTKEYBOARD_TYPE_C1  
                                  UINT   hOwner,                                                                                                    
  //该输入法的UI窗口  
                                  int   x,                                                                                                                
                  //定位坐标  
                                  int   y                                                                                                                  
                //定位坐标  
                          )  
   
          成功返回软键盘的窗口句柄  
   
  16、BOOL   WINAPI   ImmDestroySoftKeyboard(             //销毁软键盘  
                                  HWND   hSoftKbdWnd                                                                          
  //软年盘窗口句柄  
                          )  
   
              成功为TRUE,法哦则为FALSE.  
   
  17、BOOL   WINAPI     ImmShowSoftKeyboard(             //显示或隐藏软键盘  
                                  HWND   hSoftKbdWnd,                                                                        
  //软年盘窗口句柄  
                                  int   nCmdShow                                                                                          
  //窗口状态=SW_HIDE   表示隐藏,=SW_SHOWNOACTIVATE表示显示  
                                )  
   
  如构成功返回   TRUE.   否则为   FALSE.  
   
  Top

在HKEY_USERS:".DEFAULT/keyboardlayout/preload"放的是已安装的输入法,下有几个以数字为名的子键,内容是输入法代号(keyboard   layout),
如"e0040804",其中左4位是设备代码(device   identifier),右4位是语言代码(language   identifier)。简体输入法的序号为E02x0804(x为’0’-‘9’的数字)  
  在HKEY_LOCAL_MACHINE:"System/CurrentControlSet/Control/KeyboardLayouts/"放的是已注册的输入法。
他的子键名为输入法代号(keyboard   layout),内容为该输入法的ime文件,名称等信息。  
   
再往下LoadKeyboardLayout   装入输入法的键盘布局    
   

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值