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

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


          網站導航:
           
          主站蜘蛛池模板: 夏河县| 庆阳市| 措勤县| 龙岩市| 五台县| 大姚县| 泰州市| 武隆县| 巨鹿县| 长岛县| 宝鸡市| 神池县| 绥中县| 柳林县| 乳源| 肥城市| 沂源县| 宕昌县| 靖边县| 金堂县| 台山市| 青岛市| 永清县| 水富县| 大冶市| 凌海市| 临沧市| 大同市| 通山县| 明水县| 浦北县| 阿克苏市| 吐鲁番市| 桐柏县| 大足县| 临夏市| 秀山| 卓尼县| 乐东| 深水埗区| 峨边|