Free mind

Be fresh and eager every morning, and tired and satisfied every night.
posts - 39, comments - 2, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

其实很简单啦,不过微软的API应用说明中对这个的描述也不清楚,现将我的实现代码和注意事项贴出来给大家参考。

 1#include <INITGUID.H>
 2#include "MSIME.h"
 3.
 4.
 5.
 6    CString sSelect;
 7    this->GetWindowText(sSelect);
 8
 9    IFELanguage *lang = NULL;
10    if(SUCCEEDED(CoCreateInstance(CLSID_MSIME_JAPANESE_6,NULL,
11        CLSCTX_INPROC_SERVER,IID_IFELanguage,(void**)&lang)) && lang != NULL)
12    {
13        if(!SUCCEEDED(lang->Open()))
14        {
15            return;
16        }

17    }

18    if(lang)
19    {
20        CString sResult;
21        BSTR out = NULL;
22        if(SUCCEEDED(lang->GetPhonetic(_bstr_t(sSelect),1,-1,&out)) && out != NULL)
23        {
24            sResult = out;
25            ::SysFreeString(out);
26        }

27        this->SetWindowText(sResult);
28    }
第1行的include比较重要,如果不加,容易出现链接错误,这是在platform的SDK中带有的头文件。
第2行是关键性头文件,在微软japan ime文档的append部分带有,现在最新是1.3版。
其他部分照猫画虎就行了,值得注意的是CLSID_MSIME_JAPANESE_6这个,如果要想在win2000下用,一定要用低版本的,推荐像我这样用6。

用这套API,还可以完成类似于转换拼音之类的功能,如果要创造自己的输入法,建议看看TSF,微软给了很多TSF的例子。

只有注册用户登录后才能发表评论。


网站导航: