WinCE输入法 .

来源:互联网 发布:算法的五个特征 编辑:程序博客网 时间:2024/05/17 22:36

1 枚举WinCE系统中可用的输入法

int SipEnumIM(

  IMENUMPROC pEnumIMProc

);

参数pEnumIMProc指向一个回调函数SipEnumIMProc,在该函数中获取可用输入法的信息。如果pEnumIMProc设置为NULL,则SipEnumIM返回当前系统中可用输入法的数量。

CLSID g_SipClsid[10] = {0};

int g_index = 0, g_nIMs = 0;

g_nIMs = SipEnumIM(NULL); //在我们的eWin产品中,返回值是2(大小双拼)

回调函数SipEnumIMProc的原型:

int SipEnumIMProc(

  IMENUMINFO* pIMInfo

);

参数pIMInfo指向IMENUMINFO结构体,该结构体如下:

struct_IMENUMINFO{

  TCHAR szName[MAX_PATH];

  CLSID clsid;

}IMENUMINFO;

主要获取其中的clsid,保存下来,以后设置当前输入法要用到。

例:

CLSID g_SipClsid[20] = {0};

int g_index = 0, g_nIMs = 0;

 

int SipEnumIMProc(IMENUMINFO* pIMInfo)

{

       if (g_index < g_nIMs)

       {

              g_SipClsid[g_index] = pIMInfo->clsid;

              g_index++;

              return g_index;

       }

       g_index = 0;

       return 0;

}

 

g_nIMs = SipEnumIM(NULL);

IMENUMPROC pEnumIMProc = SipEnumIMProc;

SipEnumIM(pEnumIMProc);

这段代码在我公司WinCE产品中获取到两个可用输入法的CLSID

{f50603d1-cf2f-41d8-a74b-651226633ff0}

{28BD0FFF-23E2-4976-A685-C419CB8011DC}

上面的是小键盘双拼输入法的CLSID,下面的是大键盘的CLSID

2 设置当前输入法

BOOL SipSetCurrentIM(

  CLSID* pClsid

);

这一个函数就可以完成设置当前输入法的功能,唯一的参数就是可用的输入法CLSID

例:

::SipSetCurrentIM(&g_SipClsid[0]); //设置为小键盘双拼输入法

::SipSetCurrentIM(&g_SipClsid[1]); //设置为大键盘双拼输入法

3 设置WinCE系统的开机默认输入法

[HKEY_CURRENT_USER/ControlPanel/Sip]

在我的WinCE系统下,在如上注册表位置,DefaultImData设置为{f50603d1-cf2f-41d8-a74b-651226633ff0},则开机默认的输入法为小键盘。将其值修改为{28BD0FFF-23E2-4976-A685-C419CB8011DC}则开机默认的输入法为大键盘,当然前提是注册表可掉电保存。

4 显示/隐藏当前输入法面板

SipShowIM(SIPF_ON);  // 显示

SipShowIM(SIPF_OFF);  // 隐藏

 

0 0
原创粉丝点击