ページの先頭行へ戻る
Interstage Charset Manager Standard Edition V9 使用手引書 入力機能編
FUJITSU Software

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: }