注意
各ソースコード例で、行の先頭に「数字:」(たとえば"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: }