• 検索結果がありません。

ソースコード例

ドキュメント内 使用手引書 入力機能編 (ページ 89-94)

第 3 章 運用

A.6 サンプルプログラム

A.6.5 ソースコード例

注意

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

付録 B エラーメッセージ

Charset-入力アシストが画面上に表示するエラーメッセージを、メッセージの内容ごとに、五十音順に説明します。

ドキュメント内 使用手引書 入力機能編 (ページ 89-94)

関連したドキュメント