?? english_chinese_test.c
字號:
if(g_gbMMIGlobals.outputInfo.isShowIMWin) { if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Pinyin) { if(g_gbMMIGlobals.outputInfo.syllableNum > 0) { for(i = 0; i < g_gbMMIGlobals.outputInfo.syllableNum; i++) { char putf_8[256]; if(i ==g_gbMMIGlobals.outputInfo.syllableIndex) printf(" ["); else printf(" "); unicodeStr2utf8(g_gbMMIGlobals.outputInfo.syllables[i],putf_8,64); printf("%s",putf_8); if(i ==g_gbMMIGlobals.outputInfo.syllableIndex) printf("] "); else printf(" "); } } printf("\n"); } else if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Stroke || g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_YinStroke//) || g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Korean) { unicodeStr2utf8(g_gbMMIGlobals.outputInfo.fullOutput,putf_8,64); printf("%s ",putf_8); //stroke for(i = 0;i < g_gbMMIGlobals.outputInfo.strokeLen;i++) { if(g_gbMMIGlobals.outputInfo.stroke[i]) { char putf_8[256]; memset(putf_8,0,sizeof(putf_8)); UnicodeToUTF_8(putf_8,&g_gbMMIGlobals.outputInfo.stroke[i]); printf("%s ",putf_8); //printf("%s ",g_gbMMIGlobals.outputInfo.stroke[i]); } } //components for(i = 0;i < g_gbMMIGlobals.outputInfo.componentsLen;i++) { if(g_gbMMIGlobals.outputInfo.components[i]) { char putf_8[256]; memset(putf_8,0,sizeof(putf_8)); UnicodeToUTF_8(putf_8,&g_gbMMIGlobals.outputInfo.components[i]); printf("%s ",putf_8); //printf("%s ",g_gbMMIGlobals.outputInfo.components[i]); } } printf("\n"); } else if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_SmartLatin) { char putf_8[256]; unicodeStr2utf8(g_gbMMIGlobals.outputInfo.fullOutput,putf_8,64); printf(" %s\n",putf_8); } }// if(g_gbMMIGlobals.outputInfo.isShowIMWin && g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Pinyin)// {//// if(g_gbMMIGlobals.outputInfo.syllableNum > 0) // {// printf("current selected syllable item is \"%s\"\n",g_gbMMIGlobals.outputInfo.syllables[g_gbMMIGlobals.outputInfo.syllableIndex]); // }// } return rs;}void GBDrawCandidates(){ int i,ret;// printf("候選欄: \r\n"); for(i = 0; i < g_gbMMIGlobals.outputInfo.candidatesNum; i++) { //顯示候選索引下標 if(g_gbMMIGlobals.outputInfo.isSelectedCand)// && g_gbMMIGlobals.outputInfo.nInputMode != GBIM_Character) { //##sprintf(pOperation, "[%c]", INDEX_TO_NUM(i)); printf("%d", i+1); } else printf(" "); if(i ==g_gbMMIGlobals.outputInfo.candidateIndex) { printf("["); } else { printf(" "); } if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Pinyin///< PinYin of chinese || g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_Stroke///< Stroke of chinese || g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Chn_YinStroke//)///< YinStroke(combination of PinYin and Stroke) of chinese || g_gbMMIGlobals.outputInfo.nInputMode == GBIM_Korean) { if(g_gbMMIGlobals.outputInfo.candidates[i] && g_gbMMIGlobals.outputInfo.candidates[i][0]) { char putf_8[256]; unicodeStr2utf8(g_gbMMIGlobals.outputInfo.candidates[i],putf_8,64); printf("%s",putf_8); } } if(g_gbMMIGlobals.outputInfo.nInputMode ==GBIM_SmartLatin ||g_gbMMIGlobals.outputInfo.nInputMode ==GBIM_Character) { char putf_8[256]; unicodeStr2utf8(g_gbMMIGlobals.outputInfo.candidates[i],putf_8,64); printf("%s",putf_8); } if(i ==g_gbMMIGlobals.outputInfo.candidateIndex) { printf("] "); } else { printf(" "); } } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowLeftArrow) { printf("< "); } else { printf(" "); } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowRightArrow) { //在實際手機平臺中,這里應該加上繪制向右指示箭頭的代碼 printf(">"); } else { printf(""); } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowLeftArrow) printf("←"); printf(" "); if(g_gbMMIGlobals.outputInfo.otherInfo.isShowRightArrow) printf("→"); if(g_gbMMIGlobals.outputInfo.otherInfo.isShowUpArrow) printf("↑"); if(g_gbMMIGlobals.outputInfo.otherInfo.isShowDownArrow) printf("↓"); printf("\r\n"); printf("\n");// if(g_gbMMIGlobals.outputInfo.candidatesNum)// {// printf("Current Selected Candidate Item is \"%s\"\n\n\n",g_gbMMIGlobals.outputInfo.candidates[g_gbMMIGlobals.outputInfo.candidateIndex]);//反顯當前選擇的候選項 // }}//模擬getchint mygetch(){ int input; while((input = getch()) ==27 || input ==91);// printf("%d\n",input); return input; //###ifdef WIN32 //## int input; //## if((input = getch()) == DIR_CHR || input == F_CHR) //## { //## return -getch(); //## } //## return input; //###else //## static char input[10] = ""; //## static int i = 0; //## if(i >= strlen(input)) //## { //## scanf("%10s", input); //## i = 1; //## return input[0]; //## } //## else //## { //## return input[i++]; //## } //###endif}/* * 函數功能:選擇輸入法 */int SelectIM(){ int input; GBEvent event; printf("Please Press 1 - 8 to Select a Chinese InputMode:\r\n" \ "\t[1] for Pinyin(拼音)\r\n" "\t[2] for Stroke(筆畫)\r\n" "\t[3] for YinStroke(組合)\r\n" "\t[4] for SmartEnglish(智能英文)\r\n" "\t[5] for Character(字母)\r\n" "\t[6] for Number(數字)\r\n" "\t[7] for Korean(韓語)\r\n" "\t[8] for Quit\r\n");// while(((input = mygetch()) < '1' || input > '7') && input != VK_ESCAPE);// if(input == '7' || input == VK_ESCAPE) while(((input = mygetch()) < '1' || input > '8') && input != VK_ESCAPE); if(input == '8' || input == VK_ESCAPE) { return 0; } event.nType = GBET_In_ChgInputMode; switch(input) { case '1': event.param1 = GBIM_Chn_Pinyin; event.param2 = GBL_Chinese; break; case '2': event.param1 = GBIM_Chn_Stroke; event.param2 = GBL_Chinese; break; case '3': event.param1 = GBIM_Chn_YinStroke; event.param2 = GBL_Chinese; break; case '4': event.param1 = GBIM_SmartLatin; event.param2 = GBL_English; break; case '5': event.param1 = GBIM_Character; event.param2 = GBL_English; break; case '6': event.param1 = GBIM_Number; event.param2 = GBL_NULL; break; case '7': event.param1 = GBIM_Korean; event.param2 = GBL_Chinese; break; } /* 各個輸入法之間的切換可以通過GBET_In_ChgInputMode事件直接設置當前輸入法 實際開發中,使用*鍵切換輸入法。 切換輸入法的條件是:keyValue == '*' && g_gbMMIGlobals.outputInfo.isShowIMWin == 1 */ GBHandleInputEvent(&event); return 1;}long GBGetStringWidth(const char * str_text){ return (FONT_WIDTH / 2) * strlen((char*)str_text);}long GBGetWStringWidth(const unsigned short * str_text){ long len = (GBUINT16)gb_strlen((wchar_t*)str_text); long str_width = 0; const GBUINT16* ptravel =str_text; while((long)(ptravel - str_text) < len) { if(0x80 < *ptravel) str_width += FONT_WIDTH; else str_width += FONT_WIDTH / 2; ptravel++; } return str_width;}void GBCombineString(){ if(g_gbMMIGlobals.outputInfo.isCanUpScreen == 1) { GBAddChar(g_gbMMIGlobals.outputInfo.upscreenStr,g_gbMMIGlobals.outputInfo.upscreenLen);//上屏 }}void GBAddChar(GBUINT16 * str,GBUINT16 len){ if((historyISNLen + len) > ARRAY_DIM(historyISNs)) { memmove(historyISNs, historyISNs + historyISNLen + len - ARRAY_DIM(historyISNs), (ARRAY_DIM(historyISNs) - len) * 2); historyISNLen -= ((historyISNLen + len) - ARRAY_DIM(historyISNs)); } memcpy(historyISNs + historyISNLen, str, len * sizeof(unsigned short)); historyISNLen += len; }void ShowInputMethodInfo(enum __GBMMIInputMode inputMode){//int i;// for(i =0;i <40;i++)// printf("\n"); printf("─────────────────"); switch(inputMode) { case GBIM_Chn_Pinyin: printf("拼音"); break; case GBIM_Chn_Stroke: printf("筆劃"); break; case GBIM_Chn_YinStroke: printf("組合"); break; case GBIM_SmartLatin: printf("智能英文"); break; case GBIM_Character: printf("字母"); break; case GBIM_Number: printf("數字"); break; case GBIM_Korean: printf("韓語"); break; default: break; } printf("─────────────────"); printf("\n"); }void GBDrawCandPageArrow(){ if(g_gbMMIGlobals.outputInfo.otherInfo.isShowUpArrow) { //在實際手機平臺中,這里應該加上繪制上翻指示箭頭的代碼 if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_SmartLatin) printf("按向上鍵切換上一個Header\n"); else printf("按向上鍵向上翻頁\n"); } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowDownArrow) { //在實際手機平臺中,這里應該加上繪制下翻指示箭頭的代碼 if(g_gbMMIGlobals.outputInfo.nInputMode == GBIM_SmartLatin) printf("按向下鍵切換向一下Header\n"); else printf("按向下鍵向下翻頁\n"); } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowLeftArrow) { //在實際手機平臺中,這里應該加上繪制向左指示箭頭的代碼 printf("按左鍵左移選擇候選←↑→↓\n"); } if(g_gbMMIGlobals.outputInfo.otherInfo.isShowRightArrow) { //在實際手機平臺中,這里應該加上繪制向右指示箭頭的代碼 printf("按右鍵右移選擇候選←↑→↓\n"); } }void ShowInput(){#if 1 int ret = 0; char buffer[1024]; memset(buffer,0,sizeof(buffer));#if 0 //!defined(EB_ENCODING) || EB_ENCODING == EB_ENCODING_UNICODE ret = WideCharToMultiByte(CP_GB, 0, historyISNs, historyISNLen, buffer, 199, NULL, NULL);#else { /*int i; ret = 0; for(i = 0; i < historyISNLen; i++) { strncpy(buffer + ret, (char *)(historyISNs + i), 2); if(buffer[ret + 1] == 0) { ret++; } else { ret += 2; } } */ unicodeStr2utf8(historyISNs,buffer,historyISNLen); }#endif //buffer[ret] = 0; printf("\n已經上屏的文本內容: \"%s\"\r\n", buffer); #endif}void GBLoadSHData(){ /* 以下是某個平臺加載中英文自造詞文件的方法,由于平臺版本可能不同,僅供參考, 由于版本不同,以用戶的展迅平臺版本來準#ifdef __GBSHDATA...... /* 加載中文自造詞數據chn_name : 中文自造詞文件名pChnSMData:中文自造詞數據指針chn_size:中文自造詞數組長度 * / if(FFS_CheckExist(FS_UDISK,(const wchar*)chn_name)) { fp_chn = FFS_fopen(FS_UDISK, (const wchar *)chn_name, "rb"); if(PNULL != fp_chn) { ret = FFS_fread(FS_UDISK, (uint8 *)pChnSMData, 1, chn_size, fp_chn); if (ret == chn_size) { rs = TRUE; } } } else/ * 如果文件不存在則新建文件* / { fp_chn = FFS_fopen(FS_UDISK, (const wchar *)chn_name, "wb"); if(PNULL != fp_chn) { ret = FFS_fwrite(FS_UDISK, (uint8 *)pChnSMData, 1, chn_size, fp_chn); if (ret == chn_size) { rs = TRUE; } } } FFS_fclose(FS_UDISK, fp_chn); / * 加載英文自造詞數據en_name : 英文自造詞文件名pEnSMData:英文自造詞數據指針en_size:英文自造詞數組長度 * / * / if(FFS_CheckExist(FS_UDISK,(const wchar*)en_name)) { fp_en = FFS_fopen(FS_UDISK, (const wchar *)en_name, "rb"); if(PNULL != fp_en) { ret = FFS_fread(FS_UDISK, pEnSMData, 1, en_size, fp_en); if (ret == en_size) { rs = TRUE; } } } else/ *如果文件不存在則新建文件* / { fp_en = FFS_fopen(FS_UDISK, (const wchar *)en_name, "wb"); if(PNULL != fp_en) { ret = FFS_fwrite(FS_UDISK, pEnSMData, 1, en_size, fp_en); if (ret == en_size) { rs = TRUE; } } } FFS_fclose(FS_UDISK, fp_en); ......#endif */}void GBSaveSHData(){ /* 以下是某個平臺保存中英文自造詞文件的方法,由于平臺版本可能不同,僅供參考, 由于版本不同,以用戶的平臺版本來準#ifdef __GBSHDATA/ *保存中文自造詞數據chn_name : 中文自造詞文件名pChnSMData:中文自造詞數據指針chn_size:中文自造詞數組長度 * / fp_chn = FFS_fopen(FS_UDISK, (const wchar *)chn_name, "wb"); if (PNULL != fp_chn) { ret = FFS_fwrite(FS_UDISK, (uint8 *)pChnSMData, 1, chn_size, fp_chn); if (ret != (SIZE_T)chn_size) { FFS_fclose(FS_UDISK, fp_chn); FFS_Delete(FS_UDISK, (const wchar *)chn_name); return rs; } rs = TRUE; } else { fp_chn = FFS_fopen(FS_UDISK, (const wchar *)chn_name, "wb"); if(PNULL != fp_chn) { ret = FFS_fwrite(FS_UDISK, (uint8 *)pChnSMData, 1, chn_size, fp_chn); if(ret == chn_size) { rs = TRUE; } } } FFS_fclose(FS_UDISK, fp_chn); / * 保存英文自造詞數據en_name : 英文自造詞文件名pEnSMData:英文自造詞數據指針en_size:英文自造詞數組長度 * / fp_en = FFS_fopen(FS_UDISK, (const wchar *)en_name, "wb"); if (PNULL != fp_en) { ret = FFS_fwrite(FS_UDISK, (uint8 *)pEnSMData, 1, en_size, fp_en); if (ret != (SIZE_T)en_size) { FFS_fclose(FS_UDISK, fp_en); FFS_Delete(FS_UDISK, (const wchar *)en_name); return rs; } rs = TRUE; } else { fp_en = FFS_fopen(FS_UDISK, (const wchar *)en_name, "wb"); if(PNULL != fp_en) { ret = FFS_fwrite(FS_UDISK, (uint8 *)pEnSMData, 1, en_size, fp_en); if(ret == en_size) { rs = TRUE; } } } FFS_fclose(FS_UDISK, fp_en);#endif return (rs);*/}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -