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的例子。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 囊谦县| 大英县| 霍山县| 常山县| 新余市| 唐河县| 咸丰县| 盈江县| 察雅县| 宜州市| 黔西县| 馆陶县| 宿松县| 弋阳县| 固始县| 乐陵市| 含山县| 景德镇市| 博罗县| 远安县| 长葛市| 五莲县| 石柱| 浪卡子县| 揭阳市| 柳河县| 安岳县| 璧山县| 河津市| 乌鲁木齐县| 乌拉特中旗| 承德市| 青铜峡市| 冕宁县| 儋州市| 游戏| 萝北县| 垦利县| 兴化市| 南靖县| 綦江县|