⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pinyin.c

📁 详细的MiniGUI源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
static BOOL IsBackSpace(	char ch);static BOOL IsNumeric(	char ch);static void ReCalMatchHZChars();static void ReCalListChars();LGUIIme pinyinIme = {	IME_STATUS_PINYIN,	TASKBAR_IMEBMP_PINYIN,	InitIme_pinyin,	DestroyIme_pinyin,	ResetIme_pinyin,	CharArrived_pinyin,	FillBackwardSelection_pinyin,	FillForwardSelection_pinyin,	0};static BOOLInitIme_pinyin(){	memset(&imeDataTable, 0, sizeof(ImeDataTable));	return true;}static voidDestroyIme_pinyin(){	return;}static voidResetIme_pinyin(){	memset(&imeDataTable, 0, sizeof(ImeDataTable));}static BOOL CharArrived_pinyin(	char ch)	{	char charBuffer[4];	char* pRes;	int iIndex;	if(IsBackSpace(ch)){		if(imeDataTable.iTotalInputChars == 0){			//SendMessage(hWndFocus,MSG_KEYDOWN,SCANCODE_BACKSPACE,(LPARAM)NULL);			SendKeyDown2Client(SCANCODE_BACKSPACE);		}		else{			imeDataTable.iTotalInputChars -- ;			imeDataTable.pTotalInputChars[imeDataTable.iTotalInputChars] = 0;			ReCalMatchHZChars();			ReCalListChars();		}	}	else if(IsNumeric(ch)){		//select a chinese charater		iIndex = ch - 0x30;		if(iIndex + imeDataTable.iBeginPos > imeDataTable.iTotalHZChars){			memset(imeDataTable.pCurSelected,0,3);			return true;		}		else{			iIndex = (imeDataTable.iBeginPos + iIndex) * 2;			imeDataTable.pCurSelected[0] = imeDataTable.pTotalHZChars[iIndex];			imeDataTable.pCurSelected[1] = imeDataTable.pTotalHZChars[iIndex+1];			imeDataTable.pCurSelected[2] = 0;			strcpy(charBuffer, imeDataTable.pCurSelected);				SendString2Client(charBuffer);			//SendMessage(hWndFocus,MSG_CHAR,(WPARAM)charBuffer,(LPARAM)NULL);						imeDataTable.pListChars[0] = 0;			imeDataTable.iTotalInputChars = 0;			imeDataTable.pTotalInputChars[0] = 0;			imeDataTable.iTotalHZChars = 0;			imeDataTable.pTotalHZChars[0] =0;			imeDataTable.iBeginPos = 0;			}	}	else{//		imeDataTable.pTotalInputChars[imeDataTable.iTotalInputChars] = ch;		imeDataTable.iTotalInputChars ++;		imeDataTable.pTotalInputChars[imeDataTable.iTotalInputChars] = 0;		ReCalMatchHZChars();		ReCalListChars();	}	return true;}static voidFillBackwardSelection_pinyin(){	if(imeDataTable.iBeginPos == 0)		return;	else		imeDataTable.iBeginPos -= FRAME_CHARS;	ReCalListChars();}static voidFillForwardSelection_pinyin(){	if(imeDataTable.iBeginPos + FRAME_CHARS > imeDataTable.iTotalHZChars)		return;	else		imeDataTable.iBeginPos += FRAME_CHARS;	ReCalListChars();}static char*GetMatchHZString(	char* pString){	int i;	for(i=0;i<MAX_ITEMS;i++){		if(strcmp(pString, codeTable[i].pPinyin)==0)			return codeTable[i].pHanzi;	}	return NULL;}static BOOL IsBackSpace(	char ch){	if(ch == 8)		return true;	else		return false;}static BOOL IsNumeric(	char ch){	if((ch >= '0') && (ch <='9'))		return true;	else		return false;}static void ReCalMatchHZChars(){	char* pRes;	char buffer[10];	strcpy(buffer,imeDataTable.pTotalInputChars);	//printf("%s\n",buffer);	pRes = GetMatchHZString(buffer);	if(!pRes){				imeDataTable.iTotalHZChars = 0;		imeDataTable.pTotalHZChars[0] = 0;	}	else{		strcpy(imeDataTable.pTotalHZChars,pRes);		imeDataTable.iTotalHZChars = strlen(imeDataTable.pTotalHZChars);	}	imeDataTable.iBeginPos = 0;	imeDataTable.pReturnHZChars[0] = 0;	imeDataTable.pCurSelected[0] =0;	imeDataTable.pListChars[0] = 0;	}static void ReCalListChars(){	int i;	char* pListString;	//according iBeginPos	pListString = imeDataTable.pListChars;	//printf("%s\n",imeDataTable.pTotalHZChars);	for(i = 0; i<FRAME_CHARS; i++){		if(imeDataTable.iBeginPos + i >= imeDataTable.iTotalHZChars/2 - 1)			break;							pListString[0] = i+0x30;		pListString[1] = imeDataTable.pTotalHZChars[(imeDataTable.iBeginPos+i) * 2];		pListString[2] = imeDataTable.pTotalHZChars[(imeDataTable.iBeginPos+i) * 2 + 1];				pListString[3] = ' ';		pListString += 4;	}	*pListString = 0;	//printf("%s\n",imeDataTable.pListChars);			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -