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

📄 menupinyin.c

📁 本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单,自己设计的拼音注入法,完整地一级汉字库,希望对大家有所帮助
💻 C
字号:
#include "Pinyinlib.h"

//----------------------------------------------------------------------------------------------------
//		Pin Yin data file
//		Author: Weiming Zhang
//		Date:	Apr 20,2003
//		Include:
//			variable:	PY_SUBNODE *pCurPinYinSubnode;
//						unsigned char CurPinYinNode;
//			Function:	unsigned char GetPYNode(unsigned char key)
//						return: 0--no pinyin;  1--only 1 pinyin; 3--other pinyin afterwards;
//								5--other pinyin beforewards; 7--pinyin in previous and next subnodes
//----------------------------------------------------------------------------------------------------


#define PYKEY_CANCEL	0xFF
#define PYKEY_CROSS		0x23
#define PYKEY_C			0x71
#define PYKEY_UP		0x74
#define PYKEY_DOWN		0x75


PY_SUBNODE *pCurPinYinSubnode;
unsigned char CurPinYinNode;
extern rom unsigned char CurInputChars[8];
extern unsigned char CurInputCharsLen;

extern rom unsigned int *pLetterLine;
extern unsigned char HanZiSelNum;

extern PY_SUBNODE pynode[PY_ZPP+1];
extern PY_NODE pnnode[PN_986+1];

//return value:
//0--no pinyin;  1--only 1 pinyin; 3--other pinyin afterwards;  5--other pinyin beforewards; 7--pinyin in previous and next subnodes
unsigned char GetPYNode(unsigned char key)
{
	unsigned char i;
	unsigned char retval;
	
	
	switch(key){
	case PYKEY_CANCEL:
		CurPinYinNode=PN_NULL;
		pCurPinYinSubnode=(PY_SUBNODE *)0;
		CurInputCharsLen=0;
		break;
	case PYKEY_C:
		CurPinYinNode=pnnode[CurPinYinNode].father;
		pCurPinYinSubnode=pnnode[CurPinYinNode].ptrpy;
		if(CurInputCharsLen>0)
			CurInputCharsLen--;
		if(pCurPinYinSubnode!=(PY_SUBNODE *)0){
			for(i=0;i<=6;i++){
				if(pCurPinYinSubnode->py[i]==0x00)	break;
				CurInputChars[i]=pCurPinYinSubnode->py[i];
			}
		}
		break;
	case PYKEY_UP:
		if(pCurPinYinSubnode!=(PY_SUBNODE *)0){
			if(pCurPinYinSubnode->prev !=PY_SELF_ADDR){
				pCurPinYinSubnode=pCurPinYinSubnode->prev;
				for(i=0;i<=6;i++){
					if(pCurPinYinSubnode->py[i]==0x00)	break;
					CurInputChars[i]=pCurPinYinSubnode->py[i];
				}
			}
		}
		break;
	case PYKEY_DOWN:
		if(pCurPinYinSubnode!=(PY_SUBNODE *)0){
			if(pCurPinYinSubnode->next !=PY_SELF_ADDR){
				pCurPinYinSubnode=pCurPinYinSubnode->next;
				for(i=0;i<=6;i++){
					if(pCurPinYinSubnode->py[i]==0x00)	break;
					CurInputChars[i]=pCurPinYinSubnode->py[i];
				}
			}
		}
		break;
	case '#':
		if(pCurPinYinSubnode!=(PY_SUBNODE *)0){
			HanZiSelNum=0;
			pLetterLine=(rom unsigned int *)(pCurPinYinSubnode->ptrUnicode);
			for(i=0;i<255;i++){
				if(pLetterLine[i]==0x0000)	break;
				HanZiSelNum++;
			}
			CurPinYinNode=PN_NULL;
			pCurPinYinSubnode=(PY_SUBNODE *)0;
		}
		break;
	default:
		if(key>='2' && key<='9'){
		if(pnnode[CurPinYinNode].son[key-0x32]!=PN_SELF){
			CurInputCharsLen++;
			CurPinYinNode=pnnode[CurPinYinNode].son[key-0x32];
			pCurPinYinSubnode=pnnode[CurPinYinNode].ptrpy;
			for(i=0;i<=6;i++){
				if(pCurPinYinSubnode->py[i]==0x00)	break;
				CurInputChars[i]=pCurPinYinSubnode->py[i];
			}
		}
		}
	}
	if(pCurPinYinSubnode!=(PY_SUBNODE *)0){
		retval=1;
		if(pCurPinYinSubnode->next!=PY_SELF_ADDR)
			retval|=0x02;
		if(pCurPinYinSubnode->prev!=PY_SELF_ADDR)
			retval|=0x04;
	}
	else{
		CurPinYinNode=PN_NULL;
		retval=0;
	}
	return(retval);
}

⌨️ 快捷键说明

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