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

📄 uikbd_num.c

📁 嵌入工linux开发的源码
💻 C
字号:
/*********************************************************************/
//	文 件 名:	uiKbd_Num.cpp
//	程序说明:	数字键盘
//	程序设计:	宋军霞
//				2002.04.11		设计完成		说明文档:R004-S248-0001
//	程序审查:	宋军霞
//				2002.01.22		审查完成		说明文档:R004-S248-0001
//	项目编号:	R004-S248
//	版	  本:	V1.0
//	版    权:	Reality Plus Technology (ShenZhen) Co.,Ltd.
/*********************************************************************/
#include <uiWnd.h>
#include <uiKbd_Num.h>
#include <uiKbd_Num.res>
#include <uiSound.h>

// 反显按键
void KBD_NUM_INVERT(HNDL handle,int i)
{
	if(i<11)
		guiInvertRect(handle, KBDCOOR_NUM[i].left+1,
			KBDCOOR_NUM[i].top+1,KBDCOOR_NUM[i].right-1,KBDCOOR_NUM[i].bottom-1);
	else
	{
		guiInvertRect(handle, KBDCOOR_NUM[i].left+1,
			KBDCOOR_NUM[i].top+3,KBDCOOR_NUM[i].right-1,KBDCOOR_NUM[i].bottom-3);

		guiInvertRect(handle, KBDCOOR_NUM[i].left+2,
			KBDCOOR_NUM[i].top+2,KBDCOOR_NUM[i].right-2,KBDCOOR_NUM[i].top+2);
		guiInvertRect(handle, KBDCOOR_NUM[i].left+3,
			KBDCOOR_NUM[i].top+1,KBDCOOR_NUM[i].right-3,KBDCOOR_NUM[i].top+1);

		guiInvertRect(handle, KBDCOOR_NUM[i].left+2,
			KBDCOOR_NUM[i].bottom-2,KBDCOOR_NUM[i].right-2,KBDCOOR_NUM[i].bottom-2);
		guiInvertRect(handle, KBDCOOR_NUM[i].left+3,
			KBDCOOR_NUM[i].bottom-1,KBDCOOR_NUM[i].right-3,KBDCOOR_NUM[i].bottom-1);
	}
}		

/*********************************************************************/
//dest: 数字键盘开始
//para: void
//return:void
/*********************************************************************/
void guiSwKbd_startNum( HNDL handle )
{
	return;
}

/*********************************************************************/
//dest: 数字键盘结束
//para: void
//return:void
/*********************************************************************/
void guiSwKbd_endNum( HNDL handle )
{
	return;
}

/*********************************************************************/
//dest: 数字键盘对笔点消息的响应
//para: 
//	handle:	键盘控件的handle值
//	message:笔点消息类型
//	x,y:	笔点位置座标
//return:void
/*********************************************************************/
void guiSwKbd_actionNum(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_NUM, x, y);		// 搜索位置
	if(result == -1)		// 不在有效范围之内
	{
		if(pControl->SelPos != -1)
			KBD_NUM_INVERT(handle,pControl->SelPos);	// 恢复已按下的键
		pControl->SelPos = -1;
		guiExitWCS();
		return;
	}

	code=KBDCOOR_NUM[result].code;
	
	switch(message)
	{
	case PENUP:
		if(pControl->SelPos != -1 )
		{
			KBD_NUM_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_SwitchClass(handle,KBDCLASS_SYMBOL);
			break;
		case KEY_HAND:							// 切换到手写键盘
			guiSwKbd_SwitchClass(handle,KBDCLASS_HAND);
			break;
		case KEY_NUMERIC:						// 切换到下一个数字键盘
			guiSwKbd_SwitchToNextInType(handle);
			break;
		/*case KEY_MAKEWORD:						// 切换到造字键盘
			guiSwKbd_SwitchClass(handle,KBDCLASS_MAKEWORD);
			break;
			*/
		case KEY_CAPSLOCK:
			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_NUM_INVERT(handle,pControl->SelPos);// 取消前一笔点区域
		KBD_NUM_INVERT(handle,result);		// 反显笔点区域
		pControl->SelPos=result;			// 记录笔点位置
		break;
	case PENREMOVE:				// 触笔移出键盘
		if(pControl->SelPos != -1)
		{
			KBD_NUM_INVERT(handle,pControl->SelPos);	// 取消原选中位置
			pControl->SelPos = -1;
		}
		break;
	}
	guiExitWCS();
}

⌨️ 快捷键说明

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