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

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


          網站導航:
           
          主站蜘蛛池模板: 静宁县| 阿克陶县| 哈巴河县| 英吉沙县| 乌兰县| 汝城县| 武平县| 荥经县| 彭州市| 读书| 赞皇县| 南汇区| 平潭县| 白山市| 丹东市| 扶余县| 青河县| 长阳| 银川市| 三亚市| 屯昌县| 商河县| 昌黎县| 昭觉县| 大洼县| 宝兴县| 平阳县| 班戈县| 靖江市| 仁化县| 保亭| 平利县| 阳城县| 武穴市| 民勤县| 乌兰察布市| 卓尼县| 精河县| 神木县| 兴义市| 石屏县|