注意
各ソースコード例で、行の先頭に「数字:」(たとえば"1 : "など)と表記しているものがありますが、これは見やすさのために便宜的に追加した行番号です。実際のソースコードには不要です。
1. 言語切替え
1 : ----- 定義済:ここから ----- 2 : #define SMP_NAME_CMIMEFNAME "fjcm090.ime" 3 : /* Charset-入力アシストのIMEファイル名 */ 4 : UINT uImeCnt; /* キーボードレイアウトの数 */ 5 : HKL *lphKL; /* キーボードレイアウト一覧格納用 */ 6 : HWND hWnd; /* Charset-入力アシストを使用したい */ 7 : /* ウィンドウのハンドル */ 8 : char szFileName[_MAX_FNAME]; /* IMEファイル名格納領域 */ 9 : ----- 定義済:ここまで ----- 10: 11: /* キーボードレイアウト一覧を取得 */ 12: uImeCnt = GetKeyboardLayoutList(0, lphKL); 13: lphKL = (HKL*)malloc(sizeof(HKL) * uImeCnt); 14: GetKeyboardLayoutList(uImeCnt, lphKL); 15: 16: /* Charset-入力アシスト が見つかるまで繰り返す */ 17: for(i = 0; i < uImeCnt; i++){ 18: ImmGetIMEFileName(lphKL[i], szFileName, sizeof(szFileName)); 19: if(0 == _memicmp(szFileName, SMP_NAME_CMIMEFNAME, 20: strlen(SMP_NAME_CMIMEFNAME))){ 21: /* Charset-入力アシスト に変更する */ 22: ActivateKeyboardLayout(lphKL[i], 0); 23: } 24: } 25: free(lphKL);
2. PUBLIC1インタフェースのサポート確認
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト */ 3 : HKL hKL; /* キーボードレイアウト */ 4 : UINT nQuery; /* ImmEscape()呼出しに使用 */ 5 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 6 : LONG lSupport; /* ImmEscape()の戻り値 サポート情報 */ 7 : ----- 定義済:ここまで ----- 8 : 9 : /* PUBLIC1インタフェース自体のサポート確認 */ 10: nQuery = FJI_ESCAPE_PUBLIC1; 11: lSupport = (LONG)ImmEscape(hKL, hIMC, 12: IME_ESC_QUERY_SUPPORT, &nQuery); 13: if(0 == lSupport){ 14: /* この条件に当てはまる場合はサポートされていない */ 15: } 16: 17: /* 「学習レベル」設定の取得/変更のサポート確認 */ 18: FjiEscParam.dwMainFunc = FJI_EP1_GETSUPPORTINFO; 19: FjiEscParam.dwSubFunc = FJI_EP1_GSI_ENVCONTROL; 20: FjiEscParam.dwOption = FJI_EP1_ENV_MEMORIZELEVEL; 21: FjiEscParam.lpPointer = NULL; 22: lSupport = (LONG)ImmEscape(hKL, hIMC, 23: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 24: if(0 == (lSupport & 0x00000001) && 0 == (lSupport & 0x00000002)){ 25: /* この条件に当てはまる場合はサポートされていない */ 26: }
3. 日本語入力オン/オフ
日本語入力をオンにする
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト */ 3 : ----- 定義済:ここまで ----- 4 : 5 : /* 日本語入力をオン */ 6 : ImmSetOpenStatus(hIMC, TRUE);
日本語入力をオフにする
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト */ 3 : ----- 定義済:ここまで ----- 4 : 5 : /* 日本語入力をオフ */ 6 : ImmSetOpenStatus(hIMC, FALSE);
4. 辞書の設定と切替え
1 : ----- 定義済:ここから ----- 2 : LPFJI_DICFILEPACK lpDicFilePack; 3 : /* 辞書ファイル設定構造体(領域確保済み)*/ 4 : HIMC hIMC; /* インプットコンテキスト */ 5 : HKL hKL; /* キーボードレイアウト */ 6 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 7 : LONG lRet; /* ImmEscape()の戻り値 */ 8 : char szOptionDic[_MAX_PATH]; /* オプション辞書ファイルへのパス */ 9 : ----- 定義済:ここまで ----- 10: 11: /* 変更したい辞書ファイル以外は標準を使用するため、 */ 12: /* デフォルトの辞書ファイルを取得 */ 13: FjiEscParam.dwMainFunc = FJI_EP1_GETDICFILEPACK; 14: FjiEscParam.dwSubFunc = 0; 15: FjiEscParam.dwOption = FJI_EP1_DFP_DEFAULT; 16: FjiEscParam.lpPointer = lpDicFilePack; 17: lRet = (LONG)ImmEscape(hKL, hIMC, 18: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 19: if(0 >= lRet){ 20: /* この条件に当てはまる場合は取得できなかったということ */ 21: } 22: 23: /* オプション辞書だけを変更 */ 24: strcpy((char*)lpDicFilePack->lpOptionDic[0], szOptionDic); 25: strcpy((char*)lpDicFilePack->lpName, "オプション辞書変更"); 26: 27: /* 辞書ファイル設定の設定 */ 28: FjiEscParam.dwMainFunc = FJI_EP1_SETDICFILEPACK; 29: FjiEscParam.dwSubFunc = 0; 30: FjiEscParam.dwOption = FJI_EP1_DFP_APPLICATION; 31: FjiEscParam.lpPointer = lpDicFilePack; 32: lRet = (LONG)ImmEscape(hKL, hIMC, FJI_ESCAPE_PUBLIC1, &FjiEscParam); 33: if (0 >= lRet){ 34: /* この条件に当てはまる場合は設定できなかったということ */ 35: } 36: 37: /* 指定された辞書ファイルに切替え */ 38: FjiEscParam.dwMainFunc = FJI_EP1_CHANGEDICFILEPACK; 39: FjiEscParam.dwSubFunc = 0; 40: FjiEscParam.dwOption = FJI_EP1_DFP_APPLICATION; 41: FjiEscParam.lpPointer = NULL; 42: lRet = (LONG)ImmEscape(hKL, hIMC, FJI_ESCAPE_PUBLIC1, &FjiEscParam); 43: if (0 >= lRet){ 44: /* この条件に当てはまる場合は切替え */ 45: /* できなかったということ */ 45: }
5. 「学習しない」「入力予測表示しない」設定への変更
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト格納用 */ 3 : HKL hKL; /* キーボードレイアウト格納用 */ 4 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 5 : LONG lRet; /* ImmEscape()の戻り値 */ 6 : ----- 定義済:ここまで ----- 7 : 8 : /* 「学習レベル」を学習しないに変更 */ 9 : FjiEscParam.dwMainFunc = FJI_EP1_SETENVIRON_TEMP; 10: FjiEscParam.dwSubFunc = FJI_EP1_ENV_MEMORIZELEVEL; 11: FjiEscParam.dwOption = 0; 12: FjiEscParam.lpPointer = NULL; 13: lRet = (LONG)ImmEscape(hKL, hIMC, 14: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 15: if (0 >= lRet){ 16: /* この条件に当てはまる場合は変更できなかったということ */ 17: }
6. デフォルトの辞書ファイル設定への切替え
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト格納用 */ 3 : HKL hKL; /* キーボードレイアウト格納用 */ 4 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 5 : LONG lRet; /* ImmEscape()の戻り値 */ 6 : ----- 定義済:ここまで ----- 7 : 8 : /* デフォルトの辞書ファイルに切替え */ 9 : FjiEscParam.dwMainFunc = FJI_EP1_CHANGEDICFILEPACK; 10: FjiEscParam.dwSubFunc = 0; 11: FjiEscParam.dwOption = FJI_EP1_DFP_DEFAULT; 12: FjiEscParam.lpPointer = NULL; 13: lRet = (LONG)ImmEscape(hKL, hIMC, 14: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 15: if (0 >= lRet){ 16: /* この条件に当てはまる場合は切替え */ 17: /* できなかったということ */ 18: }
7. マルチボードを指定入力方式で起動
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト格納用 */ 3 : HKL hKL; /* キーボードレイアウト格納用 */ 4 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 5 : LONG lRet; /* ImmEscape()の戻り値 */ 6 : DWORD dwInputMethod; /* 切替えたい入力方式(0~6) */ 7 : ----- 定義済:ここまで ----- 8 : 9 : /* マルチボードが表示されていたら消去 */ 10: /* (「マルチボードを消去」を参照) */ 11: 12: /* マルチボードの入力方式を切替え */ 13: FjiEscParam.dwMainFunc = FJI_EP1_CHANGEBOARD; 14: FjiEscParam.dwSubFunc = dwInputMethod; 15: FjiEscParam.dwOption = 0; 16: FjiEscParam.lpPointer = NULL; 17: lRet = (LONG)ImmEscape(hKL, hIMC, FJI_ESCAPE_PUBLIC1, &FjiEscParam); 18: if(1 != lRet){ 19: /* この条件に当てはまる場合は切替え */ 20: /* できなかったということ */ 21: } 22: 23: /* マルチボードを表示 */ 24: FjiEscParam.dwMainFunc = FJI_EP1_DISPBOARD; 25: FjiEscParam.dwSubFunc = FJI_EP1_DB_DISP; 26: FjiEscParam.dwOption = 0; 27: FjiEscParam.lpPointer = 0; 28: lRet = (LONG)ImmEscape(hKL, hIMC, FJI_ESCAPE_PUBLIC1, &FjiEscParam); 29: if(1 != lRet){ 30: /* この条件に当てはまる場合は表示できなかったということ */ 31: }
8. マルチボードを消去
1 : ----- 定義済:ここから ----- 2 : HIMC hIMC; /* インプットコンテキスト格納用 */ 3 : HKL hKL; /* キーボードレイアウト格納用 */ 4 : FJI_ESCAPE_PARAM FjiEscParam; /* ImmEscape()呼出しに使用 */ 5 : LONG lRet; /* ImmEscape()の戻り値 */ 6 : int nDisp; /* マルチボードの表示状態格納用 */ 7 : ----- 定義済:ここまで ----- 8 : 9 : /* マルチボード表示状態の取得 */ 10: FjiEscParam.dwMainFunc = FJI_EP1_INQUIREBOARD; 11: FjiEscParam.dwSubFunc = 0; 12: 13: FjiEscParam.dwOption = 0; 14: FjiEscParam.lpPointer = &nDisp; 15: lRet = (LONG)ImmEscape(hKL, hIMC, 16: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 17: if(1 != lRet){ 18: /* この条件に当てはまる場合は取得できなかったということ */ 19: } 20: 21: /* マルチボードを消去 */ 22: if(1 == nDisp){ 23: FjiEscParam.dwMainFunc = FJI_EP1_DISPBOARD; 24: FjiEscParam.dwSubFunc = FJI_EP1_DB_HIDE; 25: FjiEscParam.dwOption = 0; 26: FjiEscParam.lpPointer = NULL; 27: lRet = (LONG)ImmEscape(hKL, hIMC, 28: FJI_ESCAPE_PUBLIC1, &FjiEscParam); 29: if(1 != lRet){ 30: /* この条件に当てはまる場合は消去 */ 31: /* できなかったということ */ 32: } 33: }