有关WinCE输入法

    技术2022-05-19  25

    =============================================================

    标题:有关WinCE输入法

    摘要:

    备注:Windows CE

    日期:2011.3.4

    姓名:朱铭雷

    =============================================================

    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)