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

📄 uikbd_engcap.c

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

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

/*********************************************************************/
//dest: 大写英文键盘开始
//para: void
//return:void
/*********************************************************************/
void guiSwKbd_startEngCap( HNDL handle )
{
	return;
}

/*********************************************************************/
//dest: 大写英文键盘结束
//para: void
//return:void
/*********************************************************************/
void guiSwKbd_endEngCap( HNDL handle )
{
	return;
}

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

	code=KBDCOOR_ENGCAP[result].code;
	
	switch(message)
	{
	case PENUP:
		if(pControl->SelPos != -1)
		{
			KBD_ENGCAP_INVERT(handle,pControl->SelPos);
			pControl->SelPos=-1;
		}
		switch(code)
		{
		case KEY_ENGLISH:						// 切换到下一个英文键盘
			guiSwKbd_SwitchToNextInType(handle);
			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_CAPSLOCK:						// 切换到小写键盘
			guiSwKbd_SetType(handle,KBD_ENGLISH);
			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_ENGCAP_INVERT(handle,pControl->SelPos);	// 反显以前的笔点区域
		KBD_ENGCAP_INVERT(handle,result);		// 反显笔点区域
		pControl->SelPos=result;				// 记录笔点位置
		break;
	case PENREMOVE:				// 触笔移出键盘
		if(pControl->SelPos != -1)
		{
			KBD_ENGCAP_INVERT(handle,pControl->SelPos);		// 取消原选中位置
			pControl->SelPos = -1;
		}
		break;
	}
	guiExitWCS();
}

⌨️ 快捷键说明

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