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

📄 ime.c

📁 好记星的控件,包括button,list,对文件操作
💻 C
📖 第 1 页 / 共 3 页
字号:
			{
				GraphDrawIcon( IMECATALOG_ITEM_ICON_STARTX+IMECATALOG_ITEMICON_X_INTERVAL,IMECATALOG_ITEM_ICON_STARTY+(i/2)*IMECATALOG_ITEMICON_Y_INTERVAL,
					0,0,MAKE_ID( IME_NOSELECTED_ICON ) );	
				GraphDrawText( IMECATALOG_ITEM_TEXT_STARTX+IMECATALOG_ITEMTEXT_X_INTERVAL,IMECATALOG_ITEM_TEXT_STARTY+(i/2)*IMECATALOG_ITEMTEXT_Y_INTERVAL,
					0,0,(UINT8 *)IMESELECTITEMNAME[i]);												
			}
			
		}
	}
	GraphEnableRefresh();	
}
VOID  ImeSelectDrawFrame(VOID)
{
	UINT16	wPenStyle;
	 
	    GraphDrawLine(IME_LEFTLINE_LINE0_X1,IME_LEFTLINE_LINE0_Y1,IME_LEFTLINE_LINE0_X2,IME_LEFTLINE_LINE0_Y2 );
		GraphDrawLine(IME_UPLINE_LINE0_X1,IME_UPLINE_LINE0_Y1,IME_UPLINE_LINE0_X2,IME_UPLINE_LINE0_Y2 );
		GraphDrawLine(IME_UPLINE_LINE1_X1,IME_UPLINE_LINE1_Y1,IME_UPLINE_LINE1_X2,IME_UPLINE_LINE1_Y2 );
		GraphDrawLine(IME_RIGHTLINE_LINE0_X1,IME_RIGHTLINE_LINE0_Y1,IME_RIGHTLINE_LINE0_X2,IME_RIGHTLINE_LINE0_Y2 );
		GraphDrawLine(IME_RIGHTLINE_LINE1_X1,IME_RIGHTLINE_LINE1_Y1,IME_RIGHTLINE_LINE1_X2,IME_RIGHTLINE_LINE1_Y2 );
		GraphDrawLine(IME_DOWNLINE_LINE0_X1,IME_DOWNLINE_LINE0_Y1,IME_DOWNLINE_LINE0_X2,IME_DOWNLINE_LINE0_Y2 );
		GraphDrawLine(IME_DOWNLINE_LINE1_X1,IME_DOWNLINE_LINE1_Y1,IME_DOWNLINE_LINE1_X2,IME_DOWNLINE_LINE1_Y2 ); 
 
	
	wPenStyle =GraphGetPenStyle();
	GraphSetPenStyle(PS_DOT );
	//---------
/*
	GraphDrawLine(IME_UPDOTLINE_LINE0_X1,IME_UPDOTLINE_LINE0_Y1-2,IME_UPDOTLINE_LINE0_X2,IME_UPDOTLINE_LINE0_Y2-2);
	GraphDrawLine(IME_UPDOTLINE_LINE0_X1,IME_UPDOTLINE_LINE0_Y1,IME_UPDOTLINE_LINE0_X2,IME_UPDOTLINE_LINE0_Y2 );
	GraphDrawLine(IME_UPDOTLINE_LINE1_X1,IME_UPDOTLINE_LINE1_Y1,IME_UPDOTLINE_LINE1_X2,IME_UPDOTLINE_LINE1_Y2 );
	GraphDrawLine(IME_UPDOTLINE_LINE2_X1,IME_UPDOTLINE_LINE2_Y1,IME_UPDOTLINE_LINE2_X2,IME_UPDOTLINE_LINE2_Y2 );
	GraphDrawLine(IME_UPDOTLINE_LINE3_X1,IME_UPDOTLINE_LINE3_Y1,IME_UPDOTLINE_LINE3_X2,IME_UPDOTLINE_LINE3_Y2 );
	//---------
*/
	GraphDrawLine(IME_MIDDOTLINE_LINE0_X1,IME_MIDDOTLINE_LINE0_Y1,IME_MIDDOTLINE_LINE0_X2,IME_MIDDOTLINE_LINE0_Y2 );
	//--------- 

//	GraphDrawLine(IME_DOWNDOTLINE_LINE0_X1,IME_DOWNDOTLINE_LINE0_Y1,IME_DOWNDOTLINE_LINE0_X2,IME_DOWNDOTLINE_LINE0_Y2 );
	//---------
//	GraphDrawLine(IME_RIGHTDOTLINE_LINE0_X1,IME_RIGHTDOTLINE_LINE0_Y1,IME_RIGHTDOTLINE_LINE0_X2,IME_RIGHTDOTLINE_LINE0_Y2 );
	GraphSetPenStyle(wPenStyle );
}

UINT ImeIdToSelect(UINT uID)
{
	UINT i;

	for (i = 0;i < IME_MAXNUMBER;i ++)
	{
		if (uID == IME_SELECT_LIST[i])
		{
			//return (i + 1);
			return i;
		}
	}
	return 0;
}
VOID _ImeSelectList(MIMEManager *pImeManager)
{
	INT		RetVar;
	UINT	wId;
	wId	= ImeGetCurrent();
	g_uImeSelect =ImeIdToSelect(wId);
	ImeSelectDraw();
	RetVar= RunAp( (APGUI_STRUCT*)g_pIMeSelectGuiTemplate ) ;	 
	//modified by Liang Ruhui on 2007-11-28
	DrawFullScreenAp();      //可能有不满一屏的AP调用输入法
//	MsgPost(NULL,EVENT_DRAW,NULL);	
}
//==========IMe 输入法切换List=================
//=============================================
VOID _ImeDrawGraph(UINT uType)
{
	UINT16 tempnum,i;
	UINT8 *addr;
	UINT32 uIconID;
	
	GraphDisableRefresh();	
	__ImeDrawInputBoxHead(uType);	
	switch (g_mInputBox.state)
	{
	case IM_INPUT_DOING:	/*用户正在输入*/
		GraphDrawText(g_mInputBox.rect.x+g_mInputBox.rect.height, g_mInputBox.rect.y, 0, 0,g_pIMEInBuffer);
		break;
	case IM_INPUT_ZC:		/*有内容备选*/
	case IM_INPUT_LX:
		memset(g_pIMEOutBuffer,0,IM_OUTBUFF_LEN);
		tempnum = g_pIMEWordNum - g_pIMECandiPos;
		if (tempnum > g_pIMEWordTypeNum)
			tempnum = g_pIMEWordTypeNum;
		
		for(i = 0; i < tempnum; i ++)
		{
			ImeDrawIndexNum((UINT8)i,uType);
			addr = g_pIMEDataAddr + (g_pIMECandiPos+i) * 2;
			memmove(g_pIMEOutBuffer,addr,2);
			GraphDrawText(IME_CANDI_X + i * IME_CANDI_INTERVAL, g_mInputBox.rect.y, 0, 0, g_pIMEOutBuffer);
		}
		
		/*显示尾部图标*/
		uIconID = 0;
		if((g_pIMEWordNum - g_pIMECandiPos) > g_pIMEWordTypeNum) /*后面有数据*/
		{
			if(g_pIMECandiPos)	/*前后都有没有显示的数据*/
			{
				uIconID = IDB_IME_ARROWLR;
			}
			else				/*后面有数据*/
			{
				uIconID = IDB_IME_ARROWR;
			}
		}
		else
		{
			if(g_pIMECandiPos)	/*前面还有数据*/
			{
				uIconID = IDB_IME_ARROWL;
			}
		}
		if(uIconID)
		{
			UINT  uWidth,uHeight;
			GraphGetIconSize(&uWidth,&uHeight,MAKE_ID(uIconID ) ) ;
			GraphDrawIcon(g_mInputBox.rect.x+g_mInputBox.rect.width - uWidth-2,
				g_mInputBox.rect.y+(g_mInputBox.rect.height-12)/2, 0, 0,MAKE_ID(uIconID));
		}
		
		break;
	case IM_INPUT_ERROR:/*用户输入出错*/
		GraphDrawText(g_mInputBox.rect.x+g_mInputBox.rect.height, g_mInputBox.rect.y, 0, 0, "查无此字!");
	default:
		break;
	}
	g_mInputBox.refresh = IME_NO_REFRESH;
	GraphEnableRefresh();
}
/****************************************************************************/
/* FUNCTION:   _EnglishHandleEvent											*/
/* DESCRIPTION:英数输入法的消息处理函数									*/
/* INPUTS:     pEvent,消息													*/
/* OUTPUTS:    NONE														*/
/* RETURN:     消息处理函数返回值                                          */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  Qorse		2003-03-25     创建初始版本                                 */
/****************************************************************************/
FOR_IME_ENGLISH
INT _EnglishHandleEvent(IMEGUI_STRUCT *pApGui,  UINT *pEvent, UINT *pParam)
{
	UINT16 wMsgX;
	
	wMsgX = (UINT16)(*pParam);
	if((*pEvent == EVENT_KEY) || (*pEvent == EVENT_KEYREPEAT))
	{
		if(wMsgX >= 0x20 && wMsgX <= 0x7e)
		{
			*pEvent = EVENT_CHAR;
		}
	}
	
	return 0;
}


/****************************************************************************/
/* FUNCTION:   _SymbolDrawGraph											*/
/* DESCRIPTION:符号输入法显示函数											*/
/* INPUTS:     NONE														*/
/* OUTPUTS:    NONE														*/
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  Zfs			2003-04-08     创建初始版本                                 */
/****************************************************************************/
FOR_IME_SYMBOL
void _SymbolDrawGraph(void)
{
	UINT16 pWidth, pTempnum, i;

	pWidth=g_mInputBox.rect.width;
	GraphDisableRefresh();
	GraphClearRect(g_mInputBox.rect.x,g_mInputBox.rect.y,
		g_mInputBox.rect.x+pWidth-1,g_mInputBox.rect.y+IM_HEIGHT-1);
	ImeDrawSplit();
	GraphDrawText(g_mInputBox.rect.x, g_mInputBox.rect.y, 16, IM_HEIGHT, "符");
	memset(g_pIMEOutBuffer,0,IM_OUTBUFF_LEN);
	g_pIMEWordNum = SY_SKEYDATANUM;
	pTempnum = g_pIMEWordNum - g_pIMECandiPos;

	if (pTempnum > HZ_PER_PAGE)
	{
		pTempnum = HZ_PER_PAGE;
	}


	for (i = 0; i < pTempnum; i++)
	{
		ImeDrawIndexNum((UINT8)i,IME_SYMBOL);
		memmove(g_pIMEOutBuffer,sy_pKeyData[g_pIMECandiPos+i],2);
		GraphDrawText(g_mInputBox.rect.x+IME_CANDI_X+i*IME_CANDI_INTERVAL, g_mInputBox.rect.y,0, 0,g_pIMEOutBuffer);
	}

	GraphInvertRect(g_mInputBox.rect.x,g_mInputBox.rect.y,
		g_mInputBox.rect.x+g_mInputBox.rect.height-1,g_mInputBox.rect.y+g_mInputBox.rect.height - 1);
	_imDrawArrow();
	GraphEnableRefresh();
}

/****************************************************************************/
/* FUNCTION:   _SymBolHandleEvent											*/
/* DESCRIPTION:符号输入法的消息处理函数									*/
/* INPUTS:     pEvent,消息													*/
/* OUTPUTS:    NONE														*/
/* RETURN:     消息处理函数返回值                                          */
/****************************************************************************/
/*  NAME           DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*  Zfs			2003-04-08     创建初始版本                                 */
/****************************************************************************/

char Char2Num( UINT uChar);
FOR_IME_SYMBOL
INT _SymBolHandleEvent(IMEGUI_STRUCT *pApGui,  UINT *pEvent, UINT *pParam)
{
	UINT16 nMsgx, getedzi, nIndex, nLen;
	UINT32 nMsgtype;
	char	c2n;

	nMsgtype = *pEvent;
	nMsgx = *pParam;
	c2n = Char2Num(nMsgx);

	if (nMsgtype == EVENT_DRAW)
	{
		_SymbolDrawGraph();
	}
	else if (nMsgtype == EVENT_KEY || *pEvent == EVENT_CHAR || nMsgtype ==EVENT_KEYREPEAT)
	{
		__IMEGetChar(pEvent,pParam);

		if(c2n >= '1' && c2n <= '0' + g_pIMEWordTypeNum)
		{
			nIndex = c2n - '0';
			if (nIndex)
			{
				nIndex --;
			}
			else
			{
				nIndex = 9;
			}
			if (g_pIMECandiPos + nIndex >= g_pIMEWordNum)
			{
				return 0;
			}
			*pEvent = EVENT_CHAR;
			nIndex = g_pIMECandiPos + nIndex;
			memset(g_pIMEOutWordBuf,0,3);
			nLen = (UINT8)strlen(sy_pKeyData[nIndex]);
			memmove((UINT8 *)&getedzi,sy_pKeyData[nIndex],nLen);
			*pParam = (UINT8)(getedzi);
		}
		else if(nMsgx == MVK_LEFT || nMsgx == MVK_RIGHT)
		{
		//	if(pEvent->yParam != MVK_SHIFT)	???
			{
				if (_imLeftRight(pEvent,pParam))
				{
					_SymbolDrawGraph();
				}
				*pEvent = EVENT_NOTHING;
				return 0;
			}
		}
		else if((nMsgx >= 'a' && nMsgx <= 'z') ||
			    (nMsgx >= 'A' && nMsgx <= 'Z')){
			*pEvent = EVENT_NOTHING;
		}
	}
	else if( nMsgtype == EVENT_INITIALIZE )
	{
			__InitialIME();
			g_pIMEWordNum = SY_SKEYDATANUM;
			g_pIMEDataAddr = (UINT8 *)sy_pKeyData;
			g_pIMEWordTypeNum = HZ_PER_PAGE;
			g_mInputBox.state = IM_INPUT_DOING;
			
	}	
	return 0;
}

⌨️ 快捷键说明

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