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

📄 uikbd_symbol.c

📁 嵌入工linux开发的源码
💻 C
字号:

#include <uiWnd.h>
#include <uiKbd_Symbol.h>
#include <uiKbd_Symbol.res>
#include <uiSound.h>

TSwKbd_Coor *KBDCOOR_SYMBOL;                                            

// 反显按键
#define KBD_SYMBOL_INVERT(handle,i) \
		guiInvertRect(handle, KBDCOOR_SYMBOL[i].left+1,KBDCOOR_SYMBOL[i].top+1,\
			KBDCOOR_SYMBOL[i].right-1,KBDCOOR_SYMBOL[i].bottom-1);
                                            
                                           

/*********************************************************************/
//dest: 符号键盘开始
//para: void
//return:void
/*********************************************************************/
void _guiSwKbd_startSymbol( HNDL handle )
{
	char langType;
	
	langType = guiQueryLanguageType();
	if(langType>2)
		langType = LANGUAGE_CHS;

	if(langType==LANGUAGE_CHT)
	{
		KBDCOOR_SYMBOL = (struct tagSwKbd_Coor *)KBDCOOR_SYMBOL_CHT;
	}
	else
	{
        KBDCOOR_SYMBOL = (struct tagSwKbd_Coor *)KBDCOOR_SYMBOL_CHS;
	}
	return;
}

/*********************************************************************/
//dest: 符号键盘结束
//para: void
//return:void
/*********************************************************************/
void _guiSwKbd_endSymbol( HNDL handle )
{
	return;
}

/*********************************************************************/
//dest: 符号键盘对笔点消息的响应
//para: 
//	handle:	键盘控件的handle值
//	message:笔点消息类型
//	x,y:	笔点位置座标
//return:void
/*********************************************************************/
void _guiSwKbd_actionSymbol(HNDL handle, WORD message, WORD x, WORD y)
{
	BYTE	bClass;
	WORD    code;
	int		result;
	TGuiSw_Kbd *pControl;                                         
	short langType;	                  

	langType = guiQueryLanguageType();

	
	guiEnterWCS();
	pControl=(TGuiSw_Kbd *)handle;

	//转换成相对于控件的坐标
	x -= pControl->base.left;
	y -= pControl->base.top;

	result=guiSwKbd_SearchPos(KBDCOOR_SYMBOL, x, y);		// 搜索位置
	if(result == -1)		// 不在有效范围之内
	{
		if(pControl->SelPos != -1)
			KBD_SYMBOL_INVERT(handle,pControl->SelPos);		// 恢复已按下的键
		pControl->SelPos = -1;
		guiExitWCS();
		return;
	}

	code=KBDCOOR_SYMBOL[result].code;
	
	switch(message)
	{
	case PENUP:
		if(pControl->SelPos != -1)
		{
			KBD_SYMBOL_INVERT(handle,pControl->SelPos);
			pControl->SelPos=-1;
		}
		switch(code)
		{
		case KEY_ENGLISH:						// 切换到英文键盘
			guiSwKbd_SwitchClass(handle,KBDCLASS_ENGLISH);
			break;
		case KEY_CHINESE:						// 切换到中文键盘
			//guiSwKbd_SwitchClass(handle,KBDCLASS_CHINESE);
			if(langType==LANGUAGE_CHT)
				guiSwKbd_SwitchClass(handle,KBDCLASS_CHT);
			else
				guiSwKbd_SwitchClass(handle,KBDCLASS_CHINESE);

			break;
		case KEY_SYMBOL:						// 切换到下一个符号键盘
			guiSwKbd_SwitchToNextInType(handle);
			break;
		case KEY_HAND:							// 切换到手写键盘
			guiSwKbd_SwitchClass(handle,KBDCLASS_HAND);
			break;
		default:
			guiKbd_SendMsg(handle,code,INPUT_MODE_ADD);	// 输入一个按键
			break;
		}
		guiPenSound();
		break;
	case PENMOVE:				// 在键盘中移动触笔
		if( pControl->SelPos == result )
			break;
	case PENREENTER:				// 触笔移入键盘
	case PENDOWN:
		if(pControl->SelPos != -1)
			KBD_SYMBOL_INVERT(handle,pControl->SelPos);	// 取消以前的笔点区域
		KBD_SYMBOL_INVERT(handle,result);		// 反显笔点区域
		pControl->SelPos=result;				// 记录笔点位置
		break;
	case PENREMOVE:				// 触笔移出键盘
		if(pControl->SelPos != -1)
		{
			KBD_SYMBOL_INVERT(handle,pControl->SelPos);			// 取消原选中位置
			pControl->SelPos = -1;
		}
		break;
	}
	guiExitWCS();
}

⌨️ 快捷键说明

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